pipe
echo -e "aaa bbb" 使用-e,echo就认为 后是另一条命令
nc localhost 6379 使用nc打开socket连接
echo -e "set k2 99
incr k2
get k2" | nc localhost 6379 通过管道发生命令到6379端口,即redis。
help @pubsub
PUBLISH k1 message1
SUBSCRIBE k1 只能收到subscribe以后才publish的数据
实现聊天室功能:
- 读取(看对话)
- 对于live对话,使用pub/sub完成对话更新。
- 对于历史纪录(3天),可以加入一个新redis(redis02)并使用sorted_set功能,完成过去3天的历史记录。
- 对于更长的历史纪录,则是走db
- 写(发对话)
- service1订阅,然后更新redis02的sorted_set
- service2订阅,然后把消息放进mq(rabbitmq/kafka),另一端dbservice更新db。
help @transaction
- watch: 在multi之前执行,如果事务中发现watch的对象改变了,那么事务就中断
- multi: 事务开始
- exec: 事务执行
- 如果多个事务交错进入redis,那么先看到exec的事务会先执行。
redis 中文网站
redis 英文网站,多了一个modules,https://redis.io/modules
可以添加bloom模块。
redis bloom
redis-server --loadmodule path/redisbloom.so
bf.add
bf.exists
对于redis bloom缓存穿透的数据,可以在redis内再加一条记录,这样下次看到redis有cache,就不会再穿透。