国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

Redis學習

2024-06-28 13:28:17
字體:
來源:轉載
供稿:網友
Redis學習

2014-01-26 09:37:38

來公司快半年了,還有幾天就快回家了,好開心。今天我準備梳理下redis的相關內容。

1.Redis是什么

簡單來講,Redis就是一個key-value數據庫,適合所有數據in-memory的場景。

2.Redis常用數據類型

Redis最常用的數據類型主要是下面5種:

  • string
  • hash
  • list
  • set
  • sorted set

3.Redis里可以有表么

在使用redis的時候,會和使用sql表有很大區別,我們沒有語句去操控redis服務,有的僅僅是一些簡單的命令。這些命令是數據類型敏感的,比如我們把set命令使用在list上,就會得到一個錯誤。我們來考慮一個簡單的sql表。

idusernamepassWordnamesurname
1user1pass1BobSmith
2user2pass2MarioRossi

我們如何才能把這個簡單的sql表存到Redis中呢?在sql結構中,我們可以使用select id的方式,獲取一個記錄的所有內容。所以,就有了下面這種存儲方式。

KeyValue
user:1:usernameuser1
user:1:passwordpass1
user:1:nameBob
user:1:surnameSmith
user:2:usernameuser2
user:2:passwordpass2
user:2:nameMario
user:2:surnameRossi

現在,給定一個用戶的id,我們就可以通過user:1:username,user:1:password,user:1:name,user:1:surname1這種方式去獲取所有數據了。

如果上面的數據用來支持一個登陸程序,則給定一個用戶名,我們也需要去獲取整條紀錄的信息。這時候最好的方式是建立一個映射關系user-id。即給我們的數據設計添加一個keys,user:username:id。

KeyValue
user:user1:id1
user:user2:id2

所以,如果此時Mario Rossi登陸我們的系統,我們就可以根據他提供的用戶名獲取id,從而獲取他的整個用戶信息。

另外一個問題是,我們如何去保證主鍵的唯一性。在sql世界中,我們可以通過 "id int PRimary key auto_increment",的方式解決主鍵問題。在Redis中,我們對應的解決方式是增加一個keys:"user:next_id",把這個key作為一個counter,當我們新增一個user時,可以通過INCR command來手動獲取這個id。

在sql中,如果 select * from users:就可以獲取整張表的數據。為了實現這個功能,我們可以怎么做呢?也許你會覺得,上面的規則,已經足夠我們獲取所有的數據了。通過0到user:next_id的所有ids,就可以了。但是如果有用戶數據被刪除了,我們就不能按照上面的做法來做了。

比較好的解決方式是再增加一個key, user:list 用來存儲所有在用的記錄的id。不用的id,就直接從這個list里刪掉。

最后,當我們刪除一個用戶的時候,我們需要刪除 all the keys user:id:*, user:username:id and the id in "user:list".


上一篇:GRUB2 分析 (一)

下一篇:vim實用筆記

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 那曲县| 禹州市| 遵化市| 资中县| 化隆| 大渡口区| 青海省| 临汾市| 元氏县| 泽普县| 浦北县| 会昌县| 新昌县| 民丰县| 合川市| 汽车| 冷水江市| 阳曲县| 太白县| 南汇区| 合川市| 东乡| 寿光市| 泸西县| 石家庄市| 阿鲁科尔沁旗| 剑河县| 佛学| 额尔古纳市| 鄢陵县| 衢州市| 五寨县| 邯郸县| 肃南| 金堂县| 普定县| 湖州市| 乌苏市| 九龙县| 土默特右旗| 合水县|