本帖最后由 小江哥 于 2019-1-15 13:21 编辑
字符串类型
场景:缓存、计数器、分布式锁
API:
*get key 获取key对应的value
*set key value 设置key-value
*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自减k,如果key不存在,自减后get(key)=-k
*set key value 不管key是否存在,都设置
*setnx key value key不存在,才设置
*set key value xx key存在,才设置
*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 设置指定下标所有对应的值
哈希类型
哈希键值结构:key field value
场景:用户信息
特点:Mapmap filed不能相同,value可以相同
API:
*hget key field 获取hash key对应的field的value
*hset key field value 设置hash key对应field的value
*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
*hgetall key 返回hash key对应所有的field和value
*hvals key 返回hash key对应所有filed的value
*hkeys key 返回hash key对应所有field
*hsetnx key field value 设置hash key对应的value,如果field已经存在,则失败
*hincrby key field intCounter hash key对应的field的value自增intCounter
*hincrbyfloat key field floatCounter hincrby浮点数版本
列表类型
结构:key elements
场景:微博TimeLine
特点:有序、可以重复、左右两边可以插入弹出
API:
*rpush key value1 value2 ... valueN 从列表右端插入值
*lpush key value1 value2 ... valueN 从列表左端插入值
*linsert key before|after value newValue 在list指定的值前|后插入newValue
*lpop key 从列表左侧弹出一个item
*rpop 从列表右侧弹出一个item
*lrem key count value 根据count值,从列表中删除所有value相等的项
(1)count>0,从左到右,删除最多count个value相等的项
(2)count<0,从右到左,删除最多Math.abs(count)个value相等的项
(3)count=0,删除所有value相等的项
*ltrim key start end 按照索引范围修剪列表
*lrange key start end(包含end) 获取列表指定索引范围所有item
*lindex key index 获取列表指定索引的item
*llen key 获取列表长度 时间复杂度:O(1)
*lset key index newValue 设置列表指定索引值为newValue
*blpop key timeout lpop阻塞版本,timeout是阻塞超时时间
*brpop key timeout rpop阻塞版本,timeout是阻塞超时时间
TIPS:
1、LRUSH + LPOP = Stack
2、LPUSH + RPOP = Queue
3、LPUSH + LTRIM = Capped Collection
4、LPUSH + BRPOP = Message Queue
集合类型
结构:key values
特点:无序、无重复、支持集合间操作
应用:抽奖系统、给用户添加标签、给标签添加用户、共同关注
API:
*sadd key element 向集合key添加element,如果element已经存在,添加失败
*srem key element 将集合key中的element移除掉
*scard key 计算集合大小
*sismember key element 判断element是否在集合中
*srandmember key count 从集合中随机挑选count个元素
*spop key 从集合中随机弹出一个元素
*smembers key 获取集合所有元素
*sdiff key1 key2 差集
*sinter key1 key2 交集
*sunion key1 key2 并集
*sdiff|sinter|sunion store destkey 将结果保存在destkey中
有序集合类型
结构:key scores values
特点:无重复元素、有序
应用:排行榜
API:
*zadd key score element(可以是多对) 添加score和element
*zrem key element(可以是多个) 删除元素
*zscore key element 返回元素的分数
*zincrby key increScore element 增加或减少元素的分数
*zcard key 返回元素的总个数
*zrange key start end 返回指定索引范围内的升序元素【分值】
*zrangebyscore key minScore maxScore 返回指定分数范围内的升序元素【分值】
*zremrangebyrank key start end 删除指定排名内的升序元素
*zremrangebyscore key minScore maxScore 删除指定分数内的升序元素
|
|