一、key 设计技巧
- 把表名转换为key前缀 如, tag:
- 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid
- 第3段放置主键值,如2,3,4...., a , b ,c
- 第4段,写要存储的列名
- Key 不能太长,比如1024字节,但antirez也不喜欢太短如"u:1000:pwd",要表达清楚意思才好。他私人建议用":"分隔域,用"."作为单词间的连接,如"comment:12345:reply.to"。
- Keys,返回匹配的key,支持通配符如 "keys a*" 、 "keys a?c",但不建议在生产环境大数据量下使用。
- SCAN命令,针对Keys的改进,支持分页查询Key。在迭代过程中,Keys有增删怎么办?要锁定写操作么?--不会,不做任何保证,撞大运,甚至同一条key可能会被返回多次。
- Sort,对集合按数字或字母顺序排序后返回或另存为list,还可以关联到外部key等。因为复杂度是最高的O(N+M*log(M))(N是集合大小,M 为返回元素的数量),有时会安排到slave上执行。
- Expire/ExpireAt/Persist/TTL,关于Key超时的操作。默认以秒为单位,也有p字头的以毫秒为单位的版本, Redis的内部实现见2.9 过期数据清除。
用户表 user , 转换为key-value存储 |
|||
userid |
username |
passworde |
|
9 |
Lisi |
1111111 |
lisi@163.com |