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"
    
  • 若其他查詢頻率較高的字段都可以採用冗餘信息法來維護,已空間換取時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章