推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习
MySql采用B+树组织数据结构,而redis采用dictionary方式组织数据结构。
命令
- lpush liststr Mark Darren King King
- lrange liststr 0 -1 // 表示从第一个到最后一个
- set sayid 1000
- incr sayid
- incrby key 100
- decrby key 100
- setnx feng - //不存在设置成功
- object encoding Mark
- setbit xxxx 9 1
应用
- 记录朋友圈点赞数,评论数和点击数。(hash)
- 记录朋友圈说说列表(排序),便于列表页展示。(hash)
- 记录文章的标题,摘要,坐着和封面,用于列表页展示。(hash)
- 记录朋友圈的点赞用户ID列表,评论ID列表,用于显示和去重技术。(zset)
- 缓存热点数据,减少数据库压力。(hash)
- 如果朋友圈说说ID是整数ID,可以使用redis来分配朋友圈说说ID(计数器)。(string)
- 通过集合(set) 的叫并查集运算来实现记录好友关系。(set)
string
set role:10001 ‘{[name]=“mark”,[age]=‘18’,[sex]=male}’
//极少改变
//role:10001:recharge:10001
分布式锁
- redis实现的是非公平锁,阻塞等待
- setnx lock 1
- set lock uuid nx ex 30
- del lock
位运算
- setbit sign:10001:202106 1 1
- bitcount sign:10001:202106
- getbit sign:10001:202106 2
list
- LPUSH key value value value
- LPOP key
- LRANGE key start end
- LREM key count value
- BRPOP key timeout //关键特性,空的就阻塞在这里 0为永久阻塞
- LTRIM say 0 49 //拿到最左面的50个
- LRANGE say 0 49
hash
- HINCRBY key field increment
- HLEN key
set
- 存储时无序,交并差需要进行排序
- SADD key value1 value2 value3
- SMENBERS key
- SINSMENBER key value1
- SRANDMEMBER key 2 //随机获取2个
- SPOP key 1 //随机踢出一个
- SIDFF key
- SINTER key
- SUNION key
zset
- ZADD rank 100 MARK
- ZINCRBY rank 20 MARK
- ZCARD rank
- ZRANGE rank 80 100 byscore
- ZRANGE rank 80 100 byscore withscore
- ZREVRANGE rank 80 100 byscore withscore
典型应用:排行榜