1 哈希类型
hget key field
hset key field value
hdel key field
hset user:1 :info age 23
hget user:1 :info ag
hset user:1 :info name lqz
hgetall user:1 :info
hdel user:1 :info age
hexists key field
hlen key
hexists user:1 :info name
hlen user:1 :info
hmget key field1 field2 ...fieldN
hmset key field1 value1 field2 value2
hgetall key
hvals key
hkeys key
hincrby user:1 :info pageview count
hsetnx key field value
hincrby key field intCounter
hincrbyfloat key field floatCounter
2 列表类型
rpush key value1 value2 ...valueN
linsert key before|after value newValue
linsert listkey before b java
linsert listkey after b php
lpop key
rpop key
lrem key count value
1 count>0 从左到右,删除最多count个value相等的项
2 count<0 从右向左,删除最多 Math.abs (count)个value相等的项
3 count=0 删除所有value相等的项
lrem listkey 0 a
lrem listkey -1 c
ltrim key start end
ltrim listkey 1 4
lrange key start end
lrange listkey 0 2
lrange listkey 1 -1
lindex key index
lindex listkey 0
lindex listkey -1
llen key
lset key index newValue
lset listkey 2 ppp
实现timeLine功能,时间轴,微博关注的人,按时间轴排列,在列表中放入关注人的微博的即可
blpop key timeout
brpop key timeout
lpush+lpop
lpush+rpop
lpush+ltrim
lpush+brpop
3 集合类型
sadd key element
srem key element
scard key
sismember key element
srandmember key count
spop key
smembers key
sdiff user:1 :follow user:2 :follow
sinter user:1 :follow user:2 :follow
sunion user:1 :follow user:2 :follow
sdiff|sinter|suion + store destkey...
去重场景
抽奖系统 :通过spop来弹出用户的id ,活动取消,直接删除
点赞,点踩,喜欢等,用户如果点了赞,就把用户id 放到该条记录的集合中
标签:给用户/文章等添加标签,sadd user:1 :tags 标签1 标签2 标签3
给标签添加用户,关注该标签的人有哪些
共同好友:集合间的操作
4 有序集合(zset)
key score value
user:ranking 1 lqz
user:ranking 99 lqz2
user:ranking 88 lqz3
集合:无重复元素,无序,element
有序集合:无重复元素,有序,element+score
列表:可以重复,有序,element
有序集合:无重复元素,有序,element+score
zadd key score element
zrem key element
zscore key element
zincrby key increScore element
zcard key
zrank key element
zrange key 0 -1
zrange player:rank 0 -1 withscores
zrangebyscore key minScore maxScore
zrangebyscore user:1 :ranking 90 210 withscores
zcount key minScore maxScore
zremrangebyrank key start end
zremrangebyrank user:1 :rangking 1 2
zremrangebyscore key minScore maxScore
zremrangebyscore user:1 :ranking 90 210
排行榜:音乐排行榜,销售榜,关注榜,游戏排行榜
zrevrank
zrevrange
zrevrangebyscore
zinterstore
zunionstore
5 慢查询
-slowlog-max -len :慢查询队列的长度
- slowly-log-slower-than :超过多少微妙,就算慢命令,就会记录到慢查询队列中
config set slowlog-log-slower-than 0
config set slowlog-max -len 100
config rewrite
slowlog len
slowlog reset
slowlog get
6 pipeline与事务
Redis的pipeline(管道)功能在命令行中没有,但redis是支持pipeline的,而且在各个语言版的client中都有相应的实现(Redis模块)
将一批命令,批量打包,在redis服务端批量计算(执行),然后把结果批量返回
1 次pipeline(n条命令)=1 次网络时间+n次命令时间
import redis
pool = redis.ConnectionPool(host='127.0.0.1' , port=6379 )
r = redis.Redis(connection_pool=pool)
pipe = r.pipeline(transaction=True )
pipe.multi()
pipe.set ('name' , 'lqz' )
pipe.set ('role' , 'nb' )
pipe.execute()
multi
set name lqz
set age 18
exec
watch age
multi
decr age
exec
multi
decr age
exec
7 发布订阅
发布者发布了消息,所有的订阅者都可以收到,就是生产者消费者模型(后订阅了,无法获取历史消息)
publish lqz hello
subscribe lqz
pubsub numsub lqz
pubsub channels
发布订阅数全收到,消息队列有个抢的过程,只有一个抢到
8 Bitmap位图
Bitmap位图:是字符串类型,但是以二进制形式存储的,获取,设置某个二进制位的
-假设:1 亿用户,5 千万活跃用户 统计今天活跃用户是多选 用户iduserid是整形,32 位整型
-int32 类型 4 个字节表示一个数字---》 正负 2 的31 次方-1 的范围
1 4 个字节
1001 4 个字节
-方式一:登录,把id 放到集合中---》统计集合大小
-方式二:登录,操作位图,把id 对应的数字设为1 ,以后统计1 的个数
9 HyperLogLog
redis中支持这种算法,基于HyperLogLog算法:极小的空间完成独立数量统计
很类似于布隆过滤器
pfadd key element
pfcount key
pfadd uuids "uuid1" "uuid2" "uuid3" "uuid4"
pfcount uuids
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性