一:字符串
1.1说明:
值支持的最大不能超过512MB
1.2 命令
set key value [ex seconds] [px milliseconds] [nx|xx]
ex: 键的过期时间, 单位为秒
px: 键的过期时间,单位为毫秒
nx: 键必须不存在,才可以设置成功,用于添加
xx: 与nx相反,键必须存在,才可以设置成功,用于更新
setex key value 等于 set key value ex
setnx key value 等于 set key value nx
get key
批量设置值:
mset key value [k1 v1 k2 v2 k3 v3...]
批量获取值:
mget key [k1 k2 ....]
计数:
incr key
追加值:
append key value
字符串长度:
strlen key
设置并返回原值:
getset key value
设置指定位置的字符:
setrange key offset value
获取部分字符串:
getrange key start end
各命令的时间复杂度:

1.3内部编码:
字符串的内部编码有3种:
int 8个字节的长整型
embstr: 小于等于39个字节的字符串
raw: 大于39字节的字符串
1.4典型的使用场景
a.缓存功能: 以Redis作为缓存层, mysql作为存储层

b.计数
视频播放数:
set video:playcount 1
Incr video:playcount
c.共享session
d.限速
二 哈希
2.1 说明
哈希的映射关系叫做field-value
2.2 命令
hset key field value
hegt key field
hdel key field [field ….]
hlen key
hmget key field [field …..]
hmset key field value [field value ….]
hexists key field
获取所有的filed
hkeys key
获取所有value
hvals key
获取所有的field-value
hgetall key


2.3 内部编码
ziplist 压缩列表 哈希元素小于512个配置
hashtable 哈希表 超过512时使用,读写效率会下降
2.4 使用场景
存储用户信息
三 列表
3.1 说明
存储多个有序字符串
3.2命令
从右边插入元素:
rpush key value
从左边插入元素:
lpush key value [value]

查找元素:
lrange key start end
删除:
lpop/rpop key value
修剪列表:
ltrim key start end
修改:
lset key index newvalue
阻塞队列:
BRPOP key [key …
] timeout
BRPOP list1 list2 10
时间复杂度:

3.3 内部编码:
ziplist 压缩列表 不超过512个
linkedlist 链表,超过512
3.4 使用场景:
1:消息队列:使用lpush + brpop 实现阻塞队列
2:文章列表分页
4 集合
4.1增删改查:
增: sadd key element[…..]
删 : srem key element
查:
计算元素个数:scard key
判断元素是否在集合中: sismember key element
随机从集合中返回指定个数元素: srandmember key count
获取所有元素: smembers key
查并且删除:spop key 从集合中随机返回一个元素并删除
集合之间的操作:
求集合交集:sinter key [key ….]
求集合并集:suinon key [key ….]
求多个集合的差集: sdiff key [key …..]

4.2 内部编码
集合类型的内部编码有2种:
Intset 整数集合 默认512
Hashtable 哈希表
4.3 使用场景
集合的使用场景是标签,例如一个用户可能对娱乐、体育感兴趣,另一个用户对历史、新闻感兴趣,这些兴趣就是一个标签
5 有序集合:

5.1:增删改查
增:增加元素:
zadd key score member [sorce member …..]
增加元素分数
zincrby key increment member
删除:
删除成员: zrem key member [member …]
删除指定排名内的升序元素: zremrangebyrank key start end
删除指定分数范围的元素: zremrangebyscore key min max
查询:
计算成员个数: zcard key
计算某个成员的分数: zscore key member
计算成员的排名: zrank key member 分数从低到高 , 升序
zrevrank key member 分数从高到低, 降序
返回指定排名范围的成员: zrange key start end[withscores]或者zrevrange key start end [withscores]
返回指定分数范围的成员: zrangebyscore key min max [withscores] [limit offset count]
Zrevrangebyscore key max min [withscores] [limit offset count]
返回指定分数范围成员个数: zcount key min max
集合之间的操作:
交集:zinterstore destination numbers key [key ….]
并集: zunionstore destination numbers key [key ….]
destination : 计算结果保存的键
numkeys: 计算键的个数

复杂度

5.2 内部编码:
Ziplist(压缩列表) 128
Skiplist(跳跃列表)
5.3 使用场景:
适用于排行榜系统
6: redis键管理:
对redis所有的键生效:
type, del, object exists expire
键重命名:
rename
随机返回一个键:
randomkey
清楚键过期时间:
persist key
迁移键:
move key db
或者:
dump key
restore key ttl value
或者:
migrate host port key | "" destination-db timeout
全量遍历键:
dbsize
keys *
渐进式遍历:
scan cursor [match pattern] [count member]

171

被折叠的 条评论
为什么被折叠?



