Redis入门——3.Redis key的设计技巧

Redis key的设计技巧

一,key设计原则

  1. 把表名转换为key前缀, 比如: tag:
  2. 第二段放置用于区分key的字段–对应mysql中的主键的列名
  3. 第三段放置主键值
  4. 第三段写列名

二,案例

用户表user, 转换为redis的key-value存储

uid username password phone
1 zhangsan 123 12222222
2 lisi 123 11111111

转储redis

127.0.0.1:7004> set user:uid:1:username zhangsan
-> Redirected to slot [7756] located at 127.0.0.1:7005
OK
127.0.0.1:7005> set user:uid:1:password 123
-> Redirected to slot [3299] located at 127.0.0.1:7004
OK
127.0.0.1:7004> set user:uid:1:phone 13333333
OK

获取信息 单机模式

127.0.0.1:7004> keys user:uid:1*
1) "user:uid:1:phone"
2) "user:uid:1:password"

集群模式则需要在所有nodes中输入该命令,最终整合结果集

三,注意

实际应用中,我们可能会经常根据username查询,假设有10000条记录,若下列查询

127.0.0.1:7004> keys user:uid:*:username:lisi

可能会在第[0-10000]次查询到结果。

解决:

  • 在mysql中我们可以通过给username加索引优化查询

  • 在redis中我们类似的通过冗余信息法可以维护这样的关系

  • 127.0.0.1:7004> set user:username:lisi:uid 1 #建立一个username和uid对应的表
    OK
    127.0.0.1:7004> get user:username:lisi:uid  #根据用户名获取id从而获取用户的其他信息
    "1"
    
  • 若其他查询频率较高的字段都可以采用冗余信息法来维护,已空间换取时间

发布了10 篇原创文章 · 获赞 1 · 访问量 815

猜你喜欢

转载自blog.csdn.net/weixin_44852645/article/details/103995131