五大数据类型分别是:String,List , set, hash, zset

一、String

String类型简介

  1. 最基本的类型。
  2. 类型是二进制安全的。可以包含任意数据类型,比如图片和序列化对象。
  3. 一个String的value最多可以使512M。

String类型基本操作指令1

  1. get <key>  获取键所对应的的值。
  2. set <key> <value>  设置键所对应的的值。
  3. append <key> <value> 追加一个键值对。
  4. strlen <key> 值的长度
  5. setnx <key> <value> 只在key不存在时设置key的值
  6. incr <key> key中数字值增1
  7. decr <key> key中数字值减1
  8. incrby / decrby <key> <步长> key中数字值增/减 步长

原子性,指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何context switch

(1)在单线程中,能够在单条指令中完成的操作都可以认为是“原子操作”,因为中断只能发生于指令之间。

(2)在多线程中,不能被其他进程(线程)打断的操作叫原子操作

String类型基本操作指令2

  1. mset <key1> <value1> <key2> <value2>...:同时设置一个或多个 key-value对
  2. mget <key1> <key2>...:同时获取一个或多个 value
  3. msetnx <key1> <value1> <key2> <value2>...:同时设置一个或多个 key-value,当且仅当key都不存在才能添加成功
  4. getrange <key> <起始位置> <结束位置>:获得值的范围,类似java中的substring
  5. setrange <key> <起始位置> <value> :用<value>覆写 <key>所存储的字符值,从起始位置开始。
  6. setex <key> <过期时间> <value>:设置键值,设置过期时间
  7. getset <key> <value>:以新换旧。设置了新值,同事显示旧知。

二、List

List类型简介

  1. 单键多值
  2. 只能存字符串,按照插入顺序排序
  3. 底层是个双向链表。对两端的操作性能很高。索引操作中间的节点性能会较差。

List类型基本操作指令

  1. lpush/rpush <key> <value1> <value2>...:从左边或右边插入一个或多个值。
  2. lpop/rpop <key>:从左边/右边弹出一个值。
  3. 值在健在,值光键亡。
  4. rpoplpush <key1> <key2>:从key1右边弹出一个值,插到key2左边。
  5. lrange <key> <start> <end>:按照索引下标获得元素(从左到右),例如 lrange key 0 -1,从左到右全部元素
  6. lindex <key> <index>:按照索引下标获得元素(从左到右),例如 lindex key -1 ,从左到右全部元素
  7. llen <key> 获得列表长度
  8. linsert <key> before/after <value> <newvalue>:在value的前/后插入值newvalue
  9. lrem <key> n <value>:从左边删除n个value(从左到右)。例如,lrem key 正数n  value  从左开始删除n个value
  10. lrem key 负数n  value  从左开始删除n个value
  11. lrem key 0  value  删除所有value

三、set

set类型简介

  1. set是一个列表
  2. set是可以自动排重的。
  3. Set是string类型的无序集合。底层是一个value为null的hash表,添加、删除、查找复杂度都是O(1).

set类型基本操作指令

  1. sadd <key> <value1> <value2> ..将一个或多个member元素加入到集合key当中 ,已经存在于集合中的元素将被忽略
  2. smembers <key> 取出该集合的所有值
  3. sismember <key> <value> 集合<key>中是否存在value
  4. scard <key> 返回该集合的元素个数
  5. srem <key> <value1> <value2> ..删除集合中某个元素
  6. spop <key> 随机从集合中弹出一个值,会从集合中删除
  7. srandmember <key> <n> 随机从集合中弹出n个值,不会从集合中删除
  8. sinter <key1> <key2> 返回两个集合的交集元素
  9. sunion <key1> <key2>返回两个集合的并集元素
  10. sdiff <key1> <key2>返回两个集合的差集元素

四、hash

hash类型简介

  1. 一个键值对集合
  2. 一个string类型的field和value映射表,特别适合用于存储对象。
  3. 类似java里面的Map<String, String>

hash类型基本操作指令

  1. hset <key> <field> <value>给key集合中的field键赋值value。例如 hset userInfo user:1001:username admin user:1001:password 123456
  2. hget <key1> <field>从key1集合中获取field的值
  3. hmset  <key1> <field1> <value1> <field2> <value2>批量设置hash的值
  4. hexists key <field> 查看key中给定field中是否存在
  5. hkeys <key> 列出该hash集合的所有field
  6. hvals <key>列出该hash集合的所有value
  7. hincrby <key> <field> <increment>
  8. 为key中的域field的值加上增量increment
  9. hsetnx <key> <field> <value>将key中的域field的值设置为value,当且仅当key中field不存在时设置。

客户端显示中文:

redis中如果存储中文,客户端中显示不了,登录redis客户端加参数--raw。即 redis-cli --raw

五、zset

zset类型简介

  1. 有序集合,
  2. 没有重复元素
  3. 每个成员都关联了一个评分,评分是可以重复的。

zset类型基本操作指令

  1. zadd <key> <score1> <value1>  <score2> <value2>  <score3> <value3> ...将一个或多个member元素及其score值
  2. zrange <key> <start> <stop>返回key中下标在<start> <stop>之间的元素
  3. zrangebyscore key min max返回key中所有score值介于min max之间(包括等于min或max)的成员
  4. zrevrangebyscore key max min 同上,改为从大到小排列
  5. zincrby <key> <increment> <value>将key元素的value对应的分数加上增量increment
  6. zrem <key> <value>删除key的value
  7. zcount <key> <min> <max>统计分数区间内元素个数
  8. zrank <key> <value>返回value按照score大小的排名,从0开始