redis入門實戰一、五種數據結構的基本操作

一 下載安裝
推薦到redis中文網:http://www.redis.com.cn/ 下載,(國外redis官網https://redis.io/相對較慢,不推薦)
二 解壓後,可以看到
作爲redis客戶端 的redis-cli.exe 和 作爲redis服務器端redis-server.exe 。
三 雙擊redis-server.exe 便可打開redis本地服務器,同樣打開客戶端會話。
接下來是redis的5種數據結構的測試

1、string:字符串
2、hash:map格式
3、set :集合,不允許有重複元素
4、sortedset:不允許有重複元素,且有序的集合
5、list:列表類型,linkedlist格式,可以有重複元素
1、string:字符串,
保存key值:set key value ,
獲取key值:get key
刪除key值:del key
重複給同一個key賦值,會覆蓋原來的值

在客戶端會話鍵入字符串存值命令,保存爲  yatou  然後獲取一下,再次保存爲abc,再次獲取是abc,覆蓋了原值,執行del 再次獲取,發現爲nil(該值在redis裏的含義爲空)
127.0.0.1:6379> set username 'yatou'   
OK
127.0.0.1:6379> get username
"yatou"
127.0.0.1:6379> set username 'abc'
OK
127.0.0.1:6379> get username
"abc"
127.0.0.1:6379> del username
(integer) 1
127.0.0.1:6379> get username
(nil)

2、hash:map格式
保存:hset mapName key value
查詢:hget mapName key
刪除:hdel mapName key
查詢所有:hgetall mapName
eg:保存

 127.0.0.1:6379> hset  myhashmap  greeting  'hello'
(integer) 1

查詢

127.0.0.1:6379> hget myhashmap greeting
"hello"
127.0.0.1:6379> hset myhashmap dog 'wangcai'
(integer) 1
127.0.0.1:6379> hset myhashmap cat 'tom'
(integer) 1

獲取map所有值

127.0.0.1:6379> hgetall myhashmap
1) "greeting"
2) "hello"
3) "dog"
4) "wangcai"
5) "cat"
6) "tom"

刪除一個entry

127.0.0.1:6379> hdel myhashmap cat
(integer) 1
127.0.0.1:6379> hgetall myhashmap
1) "greeting"
2) "hello"
3) "dog"
4) "wangcai"

3、set :集合
存儲:sadd key value1 [value2 value3…]
存儲時不允許有重複元素,比如保存a1到myset集合中

redis 127.0.0.1:6379> sadd myset a1
(integer) 1-- 表示存儲成功

再次保存a1,則會顯示保存失敗

redis 127.0.0.1:6379> sadd myset a1
(integer) 0  -- 表示存儲失敗

多個值同時保存,eg:保存 a2 a3 a4

redis 127.0.0.1:6379> sadd myset a2 a3 a4
(integer) 3 -- 表示存儲成功3個值

獲取:smembers key ,eg:獲取set集合裏所有元素,由此可發現他是無序的

redis 127.0.0.1:6379> smembers myset
1) "a4"
2) "a2"
3) "a3"
4) "a1"

刪除:srem key value;

redis 127.0.0.1:6379> srem myset a2
(integer) 1
redis 127.0.0.1:6379> smembers myset
1) "a4"
2) "a3"
3) "a1"

4、sortedset:不允許有重複元素,且有序的集合
存儲:zadd key score value,默認對score進行排序

redis 127.0.0.1:6379> zadd mysortedset 80 zhangsan
(integer) 1
redis 127.0.0.1:6379> zadd mysortedset 120 lisi
(integer) 1
redis 127.0.0.1:6379> zadd mysortedset 39 wangwu
(integer) 1

獲取所有value值

redis 127.0.0.1:6379> zrange mysortedset 0 -1
1) "wangwu"
2) "zhangsan"
3) "lisi"
redis 127.0.0.1:6379> zrange mysortedset 0 -1 withscores
1) "wangwu"
2) "39"
3) "zhangsan"
4) "80"
5) "lisi"
6) "120"

不允許有重複元素,比如再次添加王五的分數,則不會成功,刪除後再次添加王五及其分數,則會成功

redis 127.0.0.1:6379> zadd mysortedset 137 wangwu
(integer) 0  -- 表示添加失敗
redis 127.0.0.1:6379> zrem mysortedset wangwu
(integer) 1 -- 表示刪除成功
redis 127.0.0.1:6379> zadd mysortedset 137 wangwu
(integer) 1  -- 表示添加成功

獲取範圍,會看到王五的分數有改動

redis 127.0.0.1:6379> zrange mysortedset 0 -1
1) "zhangsan"
2) "lisi"
3) "wangwu"
redis 127.0.0.1:6379>  zrange mysortedset 0 -1 withscores
1) "zhangsan"
2) "80"
3) "lisi"
4) "120"
5) "wangwu"
6) "137"

5、list:列表類型,linkedlist格式,可以有重複元素
添加元素到列表頭部(左邊)或者尾部(右邊)
添加:
lpush list value:添加元素至列表最左邊 ,先進後廚
rpush list value:添加元素至列表最右邊,後進後出
範圍獲取:
lrange list start end
刪除:
lpop list value:刪除列表最左邊元素,並且返回該刪除的元素值
rpop list value:刪除列表最右邊元素,並且返回該刪除的元素值
避免枯燥,圖文結合更便於我的理解記憶
在這裏插入圖片描述
添加a1元素至列表mylinklist最左邊

redis 127.0.0.1:6379> lpush mylinklist a1    
(integer) 1

添加a2元素至列表mylinklist最左邊,此時a1被壓入裏面,a1在列表左邊第二個元素的位置

redis 127.0.0.1:6379> lpush mylinklist a2
(integer) 2

添加b1元素至列表mylinklist最右邊

redis 127.0.0.1:6379> rpush mylinklist b1
(integer) 3

添加b2元素至列表mylinklist最右邊,此時b1被壓入裏面,b1在列表右邊倒數第二個元素的位置

redis 127.0.0.1:6379> rpush mylinklist b2
(integer) 4

獲取mylinklist所有元素,可直觀看到最先獲取的是a2,最後獲取的是b2

redis 127.0.0.1:6379> lrange mylinklist 0 -1
1) "a2"
2) "a1"
3) "b1"
4) "b2"

刪除mylinklist最左邊的一個元素,並且返回刪除元素的值

redis 127.0.0.1:6379> lpop mylinklist
"a2"

刪除mylinklist最右邊的一個元素,並且返回刪除元素的值b2

redis 127.0.0.1:6379> rpop mylinklist
"b2"

再次獲取mylinklist鏈表全部元素,可看到只有a1和b1.

redis 127.0.0.1:6379> lrange mylinklist 0 -1
1) "a1"
2) "b1"

關於redis,想了解可以參看:http://www.redis.net.cn/tutorial/3501.html

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