成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

吃透Redis:琳瑯滿目的數據類型

數據庫 Redis
Redis提供了5種基本數據類型,功能非常強大,涵蓋面也比較廣,可以適用于很多的實際場景,而Memcached僅提供了簡單的key-value,相比之下,Redis就強大得多。

Redis提供了豐富的數據類型,包括了五種基本數據類型和五種擴展數據類型(非官方分類,僅個人總結,方便記憶):

圖片圖片

本文介紹5種基本數據類型,在列出常用的命令之外,還附以實例操作和適用場景說明,方便大家參考閱讀。后續文章會介紹另外5種擴展數據類型,敬請期待。

1、String

String是最基本的也是最常用的數據類型,它是一個key-value鍵值對的結構,key是鍵,字符串類型,而value是對應的值,可以是字符串,也可以是二進制數據,包括序列化對象、圖片等。

字符串類型的應用非常廣泛,包括緩存、計數器、分布式鎖、Session共享等場景。

下面我們來看看String的一些常用操作:

#設置鍵值對,如果key不存在,則新增
SET key value
#設置key的過期時間
SET key value EX [過期時間]
SETEX key [過期時間] value
#獲取key對應的value
GET key
#判斷key是否存在
EXISTS key
#刪除key
DEL key
#獲取key對應的過期時間
TTL key
#將key中存儲的數字加1
INCR key
#將key中存儲的數字減1
DECR key

記得很早以前去面試,面試官問了一個關于redis key過期的小問題:如果設置了一個key的過期時間,過一段時間再重新設置這個key的值,那么它的過期時間會變嗎?我們來試驗一下:

127.0.0.1:6379> SET hello world EX 30
OK
127.0.0.1:6379> TTL hello
(integer) 15
127.0.0.1:6379> SET hello ok
OK
127.0.0.1:6379> TTL hello
(integer) -1

可以看出,如果重新設置key的值(不指定過期時間),那么這個key的過期時間就變成了永不過期。

2、List

List字符串列表,按照插入的順序進行排序,可以從頭部或者尾部向List添加元素。List主要用于消息隊列,或者一些需要實現隊列或者棧結構的場景。

List的一些常用操作如下:

#在列表最左邊(頭部)添加一些新元素
LPUSH key element [element ...]
#在列表最右邊(尾部)添加一些新元素
RPUSH key element [element ...]
#從頭部移除一個或者多個元素
LPOP key [count]
#從尾部移除一個或者多個元素
RPOP key [count]
#返回列表的長度
LLEN key
#獲取指定范圍的值
LRANGE key start stop
#在某個值的前/后插入新值
LINSERT key <BEFORE | AFTER> pivot element
#刪除指定數量的某個元素
LREM key count element

演示一下常用的一些操作,先在列表中插入一些元素,然后再刪除,最后確認刪除成功:

127.0.0.1:6379> LPUSH mylist "order:0001" "order:0002" "order:0003"
(integer) 3
127.0.0.1:6379> LRANGE mylist 0 3
1) "order:0003"
2) "order:0002"
3) "order:0001"
127.0.0.1:6379> LREM mylist 1 "order:0003"
(integer) 1
127.0.0.1:6379> LRANGE mylist 0 3
1) "order:0002"
2) "order:0001"
127.0.0.1:6379>

3、Hash

Hash用于存儲鍵值對,類似于Java中的HashMap,它非常適用于將一些相關的數據存儲在一起,比如一個學生,他有姓名、年齡、身高等信息,類似這樣的場景,可以把數據存儲在redis的Hash中。

Hash的一些常用操作如下:

#設置一個或者多個字段的值
HSET key field value [field value ...]
#返回對應字段的值
HGET key field
#返回多個字段對應的值
HMGET key field [field ...]
#返回所有的字段和值
HGETALL key
#判斷一個字段是否存在
HEXISTS key field
#刪除一個或者多字段及其對應的值
HDEL key field [field ...]
#返回Hash中所有的key
HKEYS key
#返回Hash中所有的value
HVALS key

看一下簡單的實例,對一個用戶的基本信息進行操作:

127.0.0.1:6379> HSET user-info "name" "Tom" "age" "32" "height" "178"
(integer) 3
127.0.0.1:6379> HGET user-info height
"178"
127.0.0.1:6379> HMGET user-info name age
1) "Tom"
2) "32"
127.0.0.1:6379> HGETALL user-info
1) "name"
2) "Tom"
3) "age"
4) "32"
5) "height"
6) "178"
127.0.0.1:6379> HDEL user-info height
(integer) 1
127.0.0.1:6379> HEXISTS user-info height
(integer) 0
127.0.0.1:6379> HKEYS user-info
1) "name"
2) "age"
127.0.0.1:6379> HVALS user-info
1) "Tom"
2) "32"

4、Set

Set提供了與List類似的列表功能,但它可以自動去重,也就是說元素具有唯一性,另外,Set還提供了很多集合操作的功能,像多個集合之間的并集、交集和差集等運算。

Set很適合以下一些場景:比如交友軟件中,找到兩位用戶的共同好友;電商平臺中,用戶瀏覽過的商品(需要去重)等。

Set的常見命令:

#設置一個或者多個字段的值

HSET key field value [field value ...]



#返回對應字段的值

HGET key field



#返回多個字段對應的值

HMGET key field [field ...]



#返回所有的字段和值

HGETALL key



#判斷一個字段是否存在

HEXISTS key field



#刪除一個或者多字段及其對應的值

HDEL key field [field ...]



#返回Hash中所有的key

HKEYS key



#返回Hash中所有的value

HVALS key

示例:

127.0.0.1:6379> SADD key1 "a" "b" "c" "d"
(integer) 4
127.0.0.1:6379> SMEMBERS key1
1) "c"
2) "d"
3) "b"
4) "a"
127.0.0.1:6379> SCARD key1
(integer) 4
127.0.0.1:6379> SMEMBERS key1
1) "c"
2) "d"
3) "b"
4) "a"
127.0.0.1:6379> SADD key2 "c" "d"
(integer) 2
127.0.0.1:6379> SINTER key1 key2
1) "c"
2) "d"

5、Sorted Set

Sorted Set為有序集合,元素類型為String,元素具有唯一性,每個元素都會關聯一個分數,這個分數被用來按照從低到高的方式排序。集合中的成員是唯一的,但分數可以重復,此時就按照字符串的字典順序排列。

它的應用也很廣泛,比如在線游戲中的排行榜,按照分數進行排序就很方便;也可以使用它來進行限流,防止對于API的過度請求。

Sorted Set的常見命令:

#添加一個或者多個元素

ZADD key score member [score member...]



#返回指定索引范圍的元素(升序),降序為ZREVRANGE

ZRANGE key start stop



#返回指定score范圍的元素(升序),降序為ZREVRANGEBYSCORE

ZRANGEBYSCORE key min max



#為指定元素加上指定的數量

ZINCRBY key increment member



#刪除有序集合中的一個或者多個元素

ZREM key member [member ...]



#返回指定score范圍的元素個數

ZCOUNT key min max



#返回某個元素在集合中的排名(升序),降序是ZREVRANK

ZRANK key member



#返回某個元素的分數

ZSCORE key member

有序集合常用操作的演示:

127.0.0.1:6379> ZADD mygame 10 "John" 12 "Tom" 8 "Tony" 7 "Hank"
(integer) 4
127.0.0.1:6379> ZRANGE mygame 0 -1
1) "Hank"
2) "Tony"
3) "John"
4) "Tom"
127.0.0.1:6379> ZRANGEBYSCORE mygame 10 15
1) "John"
2) "Tom"
127.0.0.1:6379> ZINCRBY mygame 8 "Hank"
"15"
127.0.0.1:6379> ZSCORE mygame "Hank"
"15"
127.0.0.1:6379> ZRANK mygame "John"
(integer) 1

6、總結

Redis提供了5種基本數據類型,功能非常強大,涵蓋面也比較廣,可以適用于很多的實際場景,而Memcached僅提供了簡單的key-value,相比之下,Redis就強大得多。另外,Redis還提供了其他擴展的5種數據類型,我們會在后續的文章中進行介紹,敬請關注。謝謝!

責任編輯:武曉燕 來源: 互聯網全棧架構
相關推薦

2010-11-25 14:45:27

軟件采購

2015-04-20 11:41:58

大數據大數據培訓機構

2011-03-28 11:05:17

ODBC

2010-03-31 17:19:55

挑選打印設備

2010-03-05 21:12:25

網絡安全企業MP3

2021-01-27 16:32:06

區塊鏈加密貨幣工具

2021-01-27 11:03:32

顯卡裝機CPU

2011-03-30 09:07:46

數據庫

2013-09-05 14:54:52

瀏覽器內核開發

2015-06-09 15:22:12

2011-03-28 13:56:31

SQL Server安全數據庫

2015-10-28 15:27:59

戴爾存儲

2023-11-13 08:31:25

SpringRedis存儲

2012-06-01 09:25:12

imo即時通訊IM

2021-11-17 10:09:16

路由器天線頻率
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品成人无久久精品 | 欧美精品啪啪 | 在线一区二区三区 | 中文字幕第90页 | 大香网伊人 | 黄a网| 日韩和的一区二在线 | 久草.com| 综合一区 | 中文字幕第三页 | 国产午夜精品一区二区三区四区 | 成人免费av | 精品一区二区在线观看 | 国产欧美日韩综合精品一 | 成人美女免费网站视频 | 污污免费网站 | 国产精品久久久久久久久久久久 | 国产精品视频一 | 欧美日韩亚洲视频 | 久久伊人一区二区 | 国产乱码精品一区二三赶尸艳谈 | 国产精品毛片一区二区在线看 | 国产精品成人一区二区三区 | 狠狠色香婷婷久久亚洲精品 | 欧美国产视频 | 91久久伊人 | 日韩在线视频免费观看 | 亚洲精品短视频 | 伊人精品在线视频 | 亚洲一区二区中文字幕 | 精品国产一区二区三区av片 | 九九在线视频 | h视频在线观看免费 | 久草网址 | 国产成人一区二 | 日本激情视频在线播放 | 嫩草黄色影院 | 91大神xh98xh系列全部 | 国产二区三区 | 日本一道本视频 | 在线观看h视频 |