版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/love905661433/article/details/82011199
字符串
使用场景
- 缓存
- 分布式锁
- 计数器
- …
常用命令
- get key : 获取key对应的value
set key value : 设置key-value,
set key value : 不管key存不存在都进行设置
setnx key value : key不存在,才设置
set key value xx : key存在,才设置del key : 删除key-value
- incr key : key自增1,如果key不存在,自增后get(key)=1,仅用于整数
- decr key : key自减1,如果key不存在,自减后get(key)=-1,仅用于整数
- incrby key k : key自增k,如果key不存在,自增后get(key)=k,仅用于整数
- decrby key k : key自减1,如果key不存在,自减后get(key)=-k,仅用于整数
- mget key1 key2 key3… : 批量获取key,原子操作
- mset key1 value1 key2 value2… : 批量设置key-value
其他命令
- getset key newvalue : set key newvalue并返回旧的value
- append key value : 将value追加到旧的value
- strlen key : 返回字符串长度(注意中文)
- incrbyfloat key 3.5 : 增加key对应的值3.5,自减传负值实现
- getrange key start end : 获取字符串指定下标所有的值
- setrange key index value : 设置指定下标所有对应的值
哈希(hash)
特点
key field-value
key-value, value是个map
常用命令
- hget key field : 获取hash key对应的field的value
- hset key field value(可多个) : 设置hash key对应的field的value
- hsetnx key field value : 设置hash key对应field的value(如field已经存在,则失败)
- hdel key field : 删除hash key对应的field的value
- hexists key field : 判断hash key是否有field
- hlen key 获取hash key field的数量
- hmget key field1 field2…fieldn : 批量获取hash key的一批field对应的值
- hmset key field1 value1 field2 value2…fieldn valuen : 批量设置hash key的一批field value
- hincrby key field intCounter : hash key对应的field的value自增intCounter
- hincrbyfloat key field floatCounter : hincrby浮点数版本
- hgetall key : 返还hash key对应所有的field和value
- hvals key : 返回hash key对应所有field的value
- hkeys key : 返回hash key对应所有的field
列表
特点
- 有序
- 可重复
- 左右两边进行弹出
常用命令
- rpush key value1 value2…valueN : 从列表右端插入值(1-N个)
- lpush key value1 value2…valueN : 从列表左端插入值(1-N个)
- linsert key before|after value newValue : 在list指定的值前|后插入newValue
- lpop key : 从列表左侧弹出一个item
- rpop key : 从列表右侧弹出一个item
lrem key count value : 根据count值,从列表中删除所有value相等的项
count>0,从左到右,删除最多count个value相等的项
count<0,从右到左,删除最多Math.abs(count)个value相等的项
count=0,删除所有与value相等的项ltrim key start end : 按照索引范围修剪列表
- lrange key start end(包含end) : 获取指定列表索引范围所有item
- lindex key index : 获取列表指定索引的item
- llen key : 获取列表长度
- lset key index newValue : 设置列表指定索引值为newValue
其他命令
- blpop key timeout : lpop的阻塞版本,timeout是阻塞超时时间,timeout=0位永远不阻塞
- brpop key timeout : rpop的阻塞版本,timeout是阻塞超时时间,timeout=0位永远不阻塞
Tips
- lpush + lpop = Stack
- lpush + rpop = Queue
- lpush + ltrim = Capped Collection
- lpush + brpop = Message Queue
集合(Set)
特点
- 无序
- 不重复
- 支持集合间操作
常用命令
- sadd key element(可多个) : 向集合key添加element(如果element已经存在,添加失败)
- srem key element(可多个) : 将集合key中的element移除掉
- scard key : 计算集合大小
- sismembber key item : 判读item是否在key对应的集合中
- srandmember key count : 从集合中随机挑选count个元素(不会破坏集合)
spop key : 从集合中随机弹出一个元素
集合中弹出,弹出之后集合中该元素就被删除了
smembers key : 获取集合所有元素
集合元素数量较多的时候 慎用
- sdiff key1 key2 : 差集,key1中存在,key2中不存在的元素,以key1中元素为主
- sinter key1 key2 : 交集
- sunion key1 key2 : 并集
- sdiff |sinter |sunion + store destkey : 将差集|交集 | 并集结果保存到destkey中
sdiffstore destkey key1 key2
sinter store destkey key1 key2
sunionstore destkey key1 key2
Tips
- sadd = Tagging
- spop/srandmember = Random item
- sadd + sinter = Social Graph
有序集合(zset)
特点
- 无重复元素
- key value score
常用命令
- zadd key score element(可以是多对) : 添加score 和element
- zrem key element(可以多个) : 删除元素
- zscore key element : 返回元素的分数
- zincrby key incrScore element : 增加或减少元素的分数
- zcard key : 返回集合元素总个数
- zrank key element : 获取元素element的排名
- zrange key start end : 返回指定索引范围内的升序元素(分值)
- zrangebyscore key minScore maxScore : 返回指定分数范围内的升序元素(分值)
- zcount key minScore maxScore : 返回有序集合内在指定分数范围内的个数
- zremrangebyrank key start end : 删除指定排名内的升序元素
- zremrangebyscore key minScore maxScore : 删除指定分数内的升序元素