redis 基本數據類型及操作學習(二)

【list類型和操作】

linsert: 在key對應特定的位置前或者後添加字符串元素; 【用法】:linsert list before 元素 要插入的元素

lset : (將list 中指定下標的元素 替換掉)設置list中指定下標元素的替換值。 【用法】:lset list 元素下標 要插入的新元素

demo:


lrem : 從key 對應的list中刪除n個相同指定元素 【用法】:lrem list 個數 元素值

demo:


ltrim:保留指定key的值內範圍的數據。【用法】: ltrim list 起始保留元素下標 結束保留元素下標

demo:


lpop :從list的頭部刪除元素,並返回刪除元素。

rpop: 從list的尾部刪除元素,並返回刪除元素。 【用法】:lpop/rpop list

rpoplpush :從第一個list的尾部 移除元素 添加到第二個list的頭部。 【用法】: rpoplpush list1 list2

demo:


【sets類型和操作】

set:是string類型的無序集合;set是通過hash table 進行實現的,添加、刪除、修改的複雜度都是0(1);我們可以對集合區交集、並集、差集。集合中不允許重複的值

【可通過這些用來實現sns中的好友推薦(取差集)和blog的tag功能】

sadd:向key 對應的set集合添加元素。添加成功返回1 ;失敗返回0。

srem:刪除名稱爲key的set集合中的元素。刪除成功返回1; 失敗返回0。

spop:隨機刪除並返回key爲set的集合中的元素。

smembers : 查看集合

demo:

redis 127.0.0.1:6379> smembers myset
1) "alibaba"
2) "baidu"
3) "tenxun"
redis 127.0.0.1:6379> sadd myset1 youku
(integer) 1
redis 127.0.0.1:6379> sadd myset1 baidu
(integer) 1
redis 127.0.0.1:6379> sadd myset1 tudou
(integer) 1
redis 127.0.0.1:6379> srem myset tudou
(integer) 0
redis 127.0.0.1:6379> srem myset1 tudou
(integer) 1
redis 127.0.0.1:6379> smembers myset1
1) "baidu"
2) "youku"
redis 127.0.0.1:6379> spop myset1
"youku"

sdiff: 返回所有給定key 與第一個key集合的差集(就是不同元素集合),以給定的第一個key 爲標準,誰在前面,返回誰和其他key 不同的集合元素
sdiffstore :將所有給定key 與第一個key集合的差集,並且將結果存儲到另外一個key集合中 。 【用法】: sdiffstore 存儲差集的key key1 比對的key2
demo:
redis 127.0.0.1:6379> smembers myset1
1) "tudou"
2) "baidu"
redis 127.0.0.1:6379> smembers myset
1) "alibaba"
2) "baidu"
3) "tenxun"
redis 127.0.0.1:6379> sdiff myset myset1
1) "alibaba"
2) "tenxun"
redis 127.0.0.1:6379> sdiff myset1 myset
1) "tudou"
redis 127.0.0.1:6379> sdiffstore myset2 myset1 myset
(integer) 1
redis 127.0.0.1:6379> smembers myset2
1) "tudou"

sinter:取兩個key的交集 並返回交集的元素。
sinterstore:取兩個key的交集 並將返回交集的元素存儲到另外一個key中。 【用法】:sinterstore 存儲交集的key key1 比對的key2
sunion:取給定key的並集,並返回並集元素。
sunionstore:取給定key的並集,並返回並集元素存儲到另一個key中 。【用法】:類似與交集
demo:
redis 127.0.0.1:6379> sinter myset1 myset
1) "baidu"
redis 127.0.0.1:6379> sinterstore myset3 myset1 myset
(integer) 1
redis 127.0.0.1:6379> smembers myset3
1) "baidu"
redis 127.0.0.1:6379> sunion myset1 myset
1) "alibaba"
2) "baidu"
3) "tudou"
4) "tenxun"
redis 127.0.0.1:6379> sunionstore myset4 muset1 myset
(integer) 3
redis 127.0.0.1:6379> smembers myset4
1) "alibaba"
2) "baidu"
3) "tenxun"

smove:將第一個key對應set中的元素移除,並添加到第二個集合set中。 【用法】 smove 集合key1 集合key2 要移除key1的元素1
scard:返回key對應set的元素個數。
sismember: 校驗key對於set中是否存在該元素。

【 sorted sets類型和操作】

sorted sets(zset)是set的一個升級版本,在set集合基礎上添加一個順序屬性;這個順序在添加修改元素時可以指定。每次指定之後,zset集合會自動按照新的值調整順序。

可以把zset 看成兩張mysql表。一張原來存儲順序;一張來存儲value元素。key可以理解爲zset集合名稱。

zadd:向有機集合中添加元素並且指定順序號;如果元素已經存在,就重新指定順序號。 【用法】:zadd zset集合 順序號 元素。

zrem:刪除有機集合中的指定元素。

demo:

redis 127.0.0.1:6379> zadd zset1 1 alibaba
(integer) 1
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> zadd zset1 2 baidu
(integer) 1
redis 127.0.0.1:6379> zadd zset1 3 baidu
(integer) 0
redis 127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "alibaba"
2) "1"
3) "baidu"
4) "3"

zincrby:如果往有機集合中元素已經在集合中存在,則該元素的score(順序)將增加increment,如果元素不存在,則添加元素,其score值爲increment值。

demo:

redis 127.0.0.1:6379> zincrby zset1 4 tenxun
"4"
redis 127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "alibaba"
2) "3"
3) "baidu"
4) "3"
5) "tenxun"
6) "4"
redis 127.0.0.1:6379> zincrby zset1 3 alibaba
"6"
redis 127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "baidu"
2) "3"
3) "tenxun"
4) "4"
5) "alibaba"
6) "6"

zrank:按照sores從小到大排序,並且返回指定的元素的下標(下標是從零開始)

zrevrank:按照sores從大到小排序,並且返回指定的元素的下標(下標是從零開始)

zrevrange :按照score的從大到小排序,並且返回整個zset元素

zrangebyscore :返回給定區間的集合元素

zcount: 返回給定區間中元素數量

zcard:zset集合元素數量

demo:

redis 127.0.0.1:6379> zrank zset1 alibaba
(integer) 2
redis 127.0.0.1:6379> zrevrank zset alibaba
(nil)
redis 127.0.0.1:6379> zrevrank zset1 alibaba
(integer) 0
redis 127.0.0.1:6379> zrevrange zset1 0 -1 withscores
1) "alibaba"
2) "6"
3) "tenxun"
4) "4"
5) "baidu"
6) "3"

發佈了25 篇原創文章 · 獲贊 20 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章