redis 实战总结
redis是做什么的
一个数据结构存储器,数据驻留在内存里,可以在程序的两次之间保存数据
一些实现细节和比较好的地方
redis 的 string 是 binary-safe 的,可以存储任意的二进制数据(bytes),甚至可以把图片存储在 redis 中
经常用到的场合
- 用作缓存
-
最基础的,最经典的应用场合,当查询数据库或者ES等存储代价比较高的时候,直接用查询的语句做 key,查询结果用作缓存
-
用做队列
-
用做集合,也就是存储一批数据的池子。用作有序集合
经常遇到的问题
过期之间只能指定到键级别,而不能指定到集合的键级别
pipeline
imporve performance by combining multi command into one and reduce TCP times
>>> p = r.pipeline() # 创建一个管道
>>> p.set('hello','redis')
>>> p.sadd('faz','baz')
>>> p.incr('num')
>>> p.execute()
[True, 1, 1]
>>> r.get('hello')
'redis'
or
>>> p.set('hello','redis').sadd('faz','baz').incr('num').execute()
默认的情况下,管道里执行的命令可以保证执行的原子性,执行pipe = r.pipeline(transaction=False)可以禁用这一特性。
坑
python redis 客户端中没有decrby指令
key 的命名
colon sign : is a convention when naming keys. Try to stick with a schema. For instance "object-type:id:field" can be a nice idea, like in "user:1000:password". I like to use dots for multi-words fields, like in "comment:1234:reply.to".