Redis數據庫的特色:python
Redis數據庫屬於nosql數據庫的一種,其存儲於內存中(非硬盤),修改較爲方便。redis
而Redis數據庫的存儲方式是使用{key:value}方式存儲,相似python基礎中的字典類型,和python中字典格式相比,其基礎格式定義基本雷同:python中字典key值爲不重複的不可變內容,value爲任意對象(字符串、列表、集合、字典);Redis中key爲固定的不重複字符串格式,value爲任意對象(字符串、hash值、列表、集合、有序集合)。sql
烏班圖中如何使用Redis呢?數據庫
進入虛擬機後:app
redis-cli 進入Redis數據庫nosql
exit 退出Redis數據庫spa
sudo service redis start/stop/restart 啓動/關閉/重啓 烏班圖 中的Redis數據庫功能rest
select n Redis中默認有16個數據庫,n爲數據庫編號0~15,沒法新建數據庫,默認選擇 n=0code
如何在Redis數據庫中進行增刪改查:對象
一、value爲字符串類型時:
建立一個key爲str_a,value爲hello的數據對象:set key value :中文理解,設置key值,value值
set str_a hello
在上述例子中hello後面加一個_world:append key value :中文理解,在key對應的value後面追加當前value值
append str_a _world
查詢str_a這個key對應的值:get key :中文理解,獲取key對應數據(想到了python字典方法,根據key獲取value)
get str_a 輸出結果:"hello_world"
刪除srt_a這個key的相關數據:del key:中文理解,刪除key對應數據
del str_a 輸出結果:(integer) 1
二、value爲hash類型時:
什麼是hash類型:即key:value對應類型,稱hash類型,在此處能夠簡單用一個例子來理解 {key:{field:value}}
由於key太多了,防止理解誤差,因此hash類型中的key咱們稱做 field ----> 域
建立:hset key field value :中文理解下:採用 hash格式 設置 key值 field值 value值
hset hash_a a 1
咱們都知道,字典內的鍵值對能夠有不少,那麼咱們這個hash值內能夠有多個值麼,能夠一次添加多個值麼?答案是確定能夠啊,,,咱們這種豬腦子都能想到的,寫代碼底層的人員確定也會啊。
hmset hash_a b 2 c 3 d 4
增長:也用set,方法和上面一毛同樣
改:同上+1
查看:查看的角度有點多,首先咱們要知道去查什麼!
查看指定的域的值:hget key field
hget hash_a a 輸出結果:"1"
查看全部的域和值:hgetall key
hgetall hash_a 輸出結果:太長了,本身敲去
查看全部的域:hkeys key:field本質上也是鍵值對的key,到這個指定的key裏面,把裏面一層的key都找出來
hkeys hash_a
查看全部的值:hvals key
hvals hash_a
三、當value值爲列表時:
建立/增長數據:lpush/rpush key value : 中文理解:左邊/右邊增長 key中value的值,關鍵詞lpush/rpush後面第一個單詞爲key,後面全部打包爲列表做爲value的值
rpush list_a 1 2 3 4 5 6
查看:lrange key start stop : l 表明 list 查看key對應值的索引,從start開始,到stop結束(包含頭尾)
lrange list_a 0 3 輸出結果是:1,2,3,4
如何查看對應索引取值呢?
lindex list 2 輸出結果:3
修改:lset key index value: 中文理解: 列表格式設置key對應值的索引號值改成value值
lset list_a 3 333
而後去查看,會發現4變成了333
刪除:rpop/lpop key :中文理解:左/右邊開始刪除一個數據(????python裏面列表的pop刪除方法????)
rpop list_a
這樣,最後的6就沒了
四、當value值爲集合時:
建立/添加數據:sadd key member : 由於集合自己縮寫是set,因此這裏設置不能再用set了,乾脆改爲了add ---> + ,value由於無序性且不重複的特色,用member表示
sadd s_a 1 1 2 3 4 5 6
這裏只存在了6個值,由於1,1,2,3,4,5,6 在這裏面會以{1,2,3,4,5,6,}形式存在,而集合內元素不能夠重複,兩個1,只保留一個
查看: smembers key
smembers key
刪除:spop key : 刪除一個值,由於無序,因此....我也不知道他會刪哪一個,隨緣吧
spop s_a
若是我不要隨機刪除呢,我就要把上述數據中的5刪掉!
使用指定刪除方法:srem key member (能夠輸入多個值,一塊兒刪除)
srem s_a 5
五、當value值爲有序集合時:
什麼是有序集合?就是有順序的集合!有順序是什麼概念,有 索 引 【一個元素不能重複的列表!???】這其中有一個增長概念,分組,即某些元素被編成一組,編組與其餘特性概念不衝突,無影響(即不影響順序,無關索引)
建立/增長:zadd key score member [score2 member2...] : z表明有序集合zset zset格式建立/增長key值中 分組爲score的value值(能夠寫好幾個),有點繞,看代碼
zadd zs_a 1 a 2 11 2 9 1 b
其中的1 2 爲分組,a 11 9 b纔是值,在這其中,a b 爲1組,11 9 爲2組,之因此爲了這樣,多是爲了方便刪除?
查看:zrange key start stop : 有點眼熟?上面列表那塊的查看方式?沒毛病,畢竟我這裏也是有順序的【zset:其實我就是個有部分集合特徵的列表 [/滑稽] 】
zrange zs_a 0 1
若是我要看1組內容呢?
分組查看:zrangebyscore key min max
zrangeby score zs_a 0 1
注意,後面要跟兩個數字,恰恰這倆數字還包含頭尾,,,,,單獨查中間一組怎麼辦?這倆數字能夠同樣啊,,,,1,1這樣就行了[/無語ing]
刪除:zrem key member/
zrem zs_a b
一次刪一個太慢,我要刪一片兒:
1)上面那個方法,你後面多寫幾個值,能夠一塊兒刪除;
2)根據索引刪,切片形式刪除:zremrangebyrank key min max
zremrangebyrank zs_a 0 1
3)除了索引,咱們還有個分組:zremrangebyscore key min max
zremrangebyscore zs_a 0 1
至此,五種value表現形式下的增刪改查基本全了,但除此以外,咱們還有一套操做,針對你建立的數據總體,若是咱們將上述內容比做表格,咱們以前的操做就是在表格中對數據進行增刪改查,那麼,咱們如何對錶格自己進行增刪改查呢?(如何對總體的key進行操做?)
補充點,全局方法:
查看全部數據的key值:
keys *
刪除鍵值對:del key
del zs_a
查看key是否存在:exists key
exists list_a
修改key 的值:rename key new_key
rename str_a stra
設置有效時間,時間到了會自動刪除,單位秒:expire key seconds
expire s_a 100
查看有效時間剩餘:ttl key
ttl s_a
取消有效時間限制:prisist key
pristst s_a