亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

Redis String 類型和 Hash 類型學習筆記與總結

2020-10-28 21:40:45
字體:
來源:轉載
供稿:網友

Linux 版本信息:

復制代碼 代碼如下:

cat /etc/issue  或cat /etc/redhat-release(Linux查看版本當前操作系統發行版信息)

CentOS release 6.6 (Final)

(一)String 類型

【定義】string 是最簡單的類型,你可以理解成與 Memcached 是一模一樣的類型,一個 key 對應一個 value,其上支持的操作與 Memcached 的操作類似。但它的功能更豐富。

string 類型是二進制安全的。意思是 redis 的 string 可以包含任何數據, 比如 jpg 圖片或者序 列化的對象。 從內部實現來看其實 string 可以看作 byte 數組,最大上限是 1G 字節。

【操作】

① set 方法

設置 key 對應的值為 string 類型的 value。

【例】添加 name = dee 的鍵值對:

復制代碼 代碼如下:

127.0.0.1:6379> set name dee
OK

設置成功。

② get 方法

【例】

復制代碼 代碼如下:

127.0.0.1:6379> get name
"dee"

獲取成功。

 

再次設置 name = deathmask,值會被覆蓋:

復制代碼 代碼如下:

127.0.0.1:6379> set name deathmask
OK

127.0.0.1:6379> get name
"deathmask"

③ setnx 方法

設置 key 對應的值為 string 類型的 value,如果 key 已經存在,返回 0,nx 表示 not exist。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> setnx name dee
(integer) 0


127.0.0.1:6379> setnx app weibo
(integer) 1


127.0.0.1:6379> get name
"deathmask"


127.0.0.1:6379> get app
"weibo"

表示 name 已經存在而且沒有更改,app 不存在則成功 set。

④ setex 方法

設置 key 對應的值為 string 類型的 value,并指定  此鍵值 對應的有效期。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> setex mobile 10 iphone
OK

127.0.0.1:6379> get mobile
"iphone"


127.0.0.1:6379> get mobile
"iphone"


127.0.0.1:6379> get mobile
(nil)

設置 mobile 的值為 iPhone,并且指定有效期為 10 秒。

⑤ setrange 方法

設定指定 key 的 value 值的子字符串

【例】將 dee 的 126 郵箱 替換為 gmail 郵箱

復制代碼 代碼如下:

127.0.0.1:6379> set email dee@126.com
OK

127.0.0.1:6379> get email
"dee@126.com"


127.0.0.1:6379> setrange email 4 gmail.com
(integer) 13


127.0.0.1:6379> get email
"dee@gmail.com"


其中 4 代表下標,(integer) 13 表示字符串的長度。

【例2】

復制代碼 代碼如下:

127.0.0.1:6379> set email dee@vip.ofim.com
OK

127.0.0.1:6379> get email
"dee@vip.ofim.com"


127.0.0.1:6379> setrange email 4 gmail.com
(integer) 16


127.0.0.1:6379> get email
"dee@gmail.comcom"


說明:如果替換的字符串沒有源字符串長,則只會把源字符串中相同長度的字符替換掉,同時保留源字符串中剩余的字符。

⑥ mset 方法

一次設置多個 key 值,成功返回 ok,表示所有的值都設置了,失敗返回 0,表示沒有任何值被設置。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> mset key1 dee1 key2 dee2
OK

127.0.0.1:6379> get key1
"dee1"


127.0.0.1:6379> get key2
"dee2"

⑦ msetnx 方法

一次設置多個 key 的值,成功返回 1,表示所有的值都被設置了。失敗返回 0 ,表示沒有任何值被設置,但是不會覆蓋已經存在的 key。

復制代碼 代碼如下:

127.0.0.1:6379> msetnx key3 dee3 key4 dee4
(integer) 1


127.0.0.1:6379> msetnx key3 dee333 key4 dee444 key5 dee5
(integer) 0


127.0.0.1:6379> get key3
"dee3"


127.0.0.1:6379> get key4
"dee4"


127.0.0.1:6379> get key5
(nil)


⑧ getset 方法

設置 key 的值,并返回 key 的舊值。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> getset key1 emperor
"dee1"

⑨ getrange 方法

獲取 key 的 value 值的子字符串。

復制代碼 代碼如下:

127.0.0.1:6379> get email
"dee@gmail.comcom"


127.0.0.1:6379> getrange email 0 12
"dee@gmail.com"


返回第 0 到第12 個字符。
⑩ mget 方法

一次獲取多個 key 的值,如果對應 key 不存在則對應返回 nil。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> mget key1 key2 key3 key4 key5
1) "emperor"
2) "dee2"
3) "dee3"
4) "dee4"
5) (nil)

⑪ incr 方法
對 key 的值做 加加 操作,并返回新的值。

【例】每次遞增1

復制代碼 代碼如下:

127.0.0.1:6379> set age 28
OK

127.0.0.1:6379> get age
"28"


127.0.0.1:6379> incr age
(integer) 29


127.0.0.1:6379> incr age
(integer) 30


127.0.0.1:6379> get age
"30"


【例2】
復制代碼 代碼如下:

127.0.0.1:6379> get real-age
(nil)

127.0.0.1:6379> incr real-age
(integer) 1


127.0.0.1:6379> get real-age
"1"

⑫ incrby 方法

同 incr 方法類似,加指定值,key 不存在時會設置 key,并認為原來的 value 為 0。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> get times
(nil)

127.0.0.1:6379> incrby times 5
(integer) 5


127.0.0.1:6379> get times
"5"


【例2】
復制代碼 代碼如下:

127.0.0.1:6379> incrby times -5
(integer) 0


127.0.0.1:6379> get times
"0"

⑬ decr 方法

對 key 的值做 減減操作。

⑭ decrby 方法

同 decr 方法類似,減指定值。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> get age
"30"


127.0.0.1:6379> decr age
(integer) 29


127.0.0.1:6379> decrby age 10
(integer) 19


127.0.0.1:6379> decrby age -10
(integer) 29

⑮ append 方法(重要)

給指定 key 的字符串追加 value ,返回新字符串的長度。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> get name
"deathmask"


127.0.0.1:6379> append name @163.com
(integer) 17


127.0.0.1:6379> get name
"deathmask@163.com"

⑯ strlen 方法

取指定 key 的 value 值的長度。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> get name
"deathmask@163.com"


127.0.0.1:6379> strlen name
(integer) 17

(二)Hash 類型

Redis hash 是一個 string 類型的 field 和 value 的 映射表。它的添加、刪除操作都是 0(1)(平均操作)。

hash 特別 適合用于存儲對象。相較于將對象的每個字段存成單個 string 類型(string 類型可以存儲對象序列化)。

將一個對象存儲在 hash 類型中會占用更少的內存,并且可以更方便的存取整個對象。

(省內存的原因是新建一個 hash 對象時開始是用 zipmap(又稱為 small hash)來存儲的。

這個 zipmap 其實并不是 hash table,但是 zipmap 相比正常的 hash 實現可以節省不少 hash 本身需要的一些元數據存儲開銷。

盡管 zipmap 的添加,刪除,查找都是 O(n),但是由于一般對象的 field 數量都不太多,所以使用 zipmap 也是很快的,也就是說添加刪除平均還是 O(1)。

如果 field 或者 value的大小超出一定限制后, Redis 會在內部自動將 zipmap 替換成正常的 hash 實現. 這個限制可以在配置文件中指定。

hash-max-zipmap-entries 64 #配置字段最多 64 個,hash-max-zipmap-value 512 #配置 value 最大為 512 字節)

【操作】

① hset 方法 / hget 方法

設置hash field 為指定值,如果 key 不存在,則先創建。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hset myhash field1 hello
(integer) 1

說明:myhash 是 hash 表的名稱,field1 是 hash 表的一個字段,hello 是這個字段對應的值。存儲用戶比較方便。

【例2】

復制代碼 代碼如下:

127.0.0.1:6379> hset user:001 name dee
(integer) 1


127.0.0.1:6379> hget user:001 name
"dee"

說明:設置 user 表 id 為 001 的用戶,用戶名為 dee。

 可以把 user:001 看作一張表。

② hsetnx 方法

設置 hash field 為指定值,如果 key 不存在,則先創建;如果存在,則返回 0。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hsetnx myhash field "hello"
(integer) 1


127.0.0.1:6379> hsetnx myhash field "hello!"
(integer) 0


127.0.0.1:6379> hget myhash field
"hello"

③ hmset 方法

同時設置 hash 的多個 field

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hmset user:002 name dee specialty php
OK

127.0.0.1:6379> hget user:002 name
"dee"


127.0.0.1:6379> hget user:002 specialty
"php"

④ hget 方法

獲取全部指定的 hash field。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hmget user:002 name specialty
1) "dee"
2) "php"

⑤ hincrby 方法

指定的 hash field 加上給定值。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hmset user:002 name dee specialty redis age 28
OK

127.0.0.1:6379> hincrby user:002 age -6
(integer) 22


127.0.0.1:6379> hmget user:002 name specialty age
1) "dee"
2) "redis"
3) "22"


127.0.0.1:6379> hincrby user:002 age 5
(integer) 27


127.0.0.1:6379> hmget user:002 name specialty age
1) "dee"
2) "redis"
3) "27"

⑥ hexists 方法

測試指定 field 是否存在。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hexists user:002 name
(integer) 1


127.0.0.1:6379> hexists user:002 sex
(integer) 0


⑦ hlen 方法

返回指定 hash 的 field 數量。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hlen user:002
(integer) 3

⑧ hdel 方法

刪除指定 hash 的 field。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hdel user:002 age
(integer) 1


127.0.0.1:6379> hget user:002 age
(nil)


⑨ hkeys 方法(類似 PHP 中 array_keys() 方法)

返回 hash 的所有 field。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hkeys user:002
1) "name"
2) "specialty"

⑩ hvals 方法(類似 PHP 中的 array_values() 方法)

返回 hash 的所有 value。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hvals user:002
1) "dee"
2) "redis"

⑪ hgetall 方法

獲取某個 hash 中全部的 field 及 value。

【例】

復制代碼 代碼如下:

127.0.0.1:6379> hgetall user:002
1) "name"
2) "dee"
3) "specialty"
4) "redis"

【總結】設置 hash 類型的數據,首先要設置 hash 的表,然后設置 hash 的 field,最后設置 hash field 的 value。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩综合视频| 国产裸体写真av一区二区| 精品人伦一区二区三区蜜桃免费| 久久99国产综合精品女同| 91大神在线播放精品| 久久久久久亚洲精品| 欧美性猛交xxxx乱大交极品| 福利视频一区二区| 国产91精品黑色丝袜高跟鞋| 黄色成人在线播放| 日本精品久久久久久久| 精品成人69xx.xyz| 一区二区福利视频| 亚洲国产成人91精品| 91久久久亚洲精品| 色噜噜亚洲精品中文字幕| 国产成人福利网站| 欧美重口另类videos人妖| 亚洲天天在线日亚洲洲精| 狠狠久久亚洲欧美专区| 亚洲精品wwwww| 韩国美女主播一区| 中文字幕欧美视频在线| 日韩av日韩在线观看| 亚洲精品二三区| 欧美日韩中国免费专区在线看| 中文字幕日韩欧美| 国产精品一区二区电影| 国产精品女人久久久久久| 一区二区成人精品| 欧美午夜宅男影院在线观看| 欧美交受高潮1| 国产69精品久久久久9999| 国产噜噜噜噜久久久久久久久| 国产成人精品综合久久久| 成人444kkkk在线观看| 俺也去精品视频在线观看| 国产xxx69麻豆国语对白| 久久91超碰青草是什么| 亚洲在线观看视频网站| 亚洲欧洲国产伦综合| 欧美日韩在线另类| 中文字幕精品在线| 国产99久久精品一区二区永久免费| 影音先锋欧美在线资源| 91高潮在线观看| 亚洲视频在线免费观看| 亚洲最大av在线| 日韩经典中文字幕| 91网在线免费观看| 亚洲精品456在线播放狼人| 日韩有码视频在线| 欧美大片欧美激情性色a∨久久| 国产精品日本精品| 国产亚洲欧洲黄色| 91系列在线观看| 久久久97精品| 亚洲综合成人婷婷小说| 欧美激情亚洲自拍| 亚洲iv一区二区三区| 91亚洲国产成人久久精品网站| 欧美色欧美亚洲高清在线视频| 美女撒尿一区二区三区| 久热精品视频在线观看| 人体精品一二三区| 久久久这里只有精品视频| 欧美性猛交xxxx富婆| 在线不卡国产精品| 成人午夜两性视频| 亚洲成**性毛茸茸| 欧美精品制服第一页| 久久久精品国产一区二区| 久久99精品视频一区97| 亚洲精品在线看| 国产精品久久久久影院日本| 亚洲精品欧美极品| 亚洲电影免费在线观看| 97在线视频免费观看| 亚洲成人久久久| 亚洲电影免费观看高清完整版在线| 久久97久久97精品免视看| 午夜精品一区二区三区在线视| 日韩亚洲精品视频| 国产福利精品av综合导导航| 国产色婷婷国产综合在线理论片a| 日韩美女视频中文字幕| 欧美日韩性视频| 国产精品国语对白| 一区二区三区视频在线| 国产精品久久久久av免费| 中文国产亚洲喷潮| 亚洲欧美激情视频| 久久人91精品久久久久久不卡| 91热福利电影| 福利一区福利二区微拍刺激| 亚洲天堂免费在线| 亚洲色图欧美制服丝袜另类第一页| 91精品久久久久久久久久另类| 成人黄色免费网站在线观看| 亚洲网站在线观看| 在线播放国产一区中文字幕剧情欧美| 久久九九免费视频| 7m第一福利500精品视频| 91精品久久久久久久久| 91久久精品美女高潮| 亚洲欧美制服丝袜| 亚洲精品电影久久久| 日韩激情视频在线播放| 欧美大肥婆大肥bbbbb| 亚洲伊人一本大道中文字幕| 黑人狂躁日本妞一区二区三区| 欧美性视频精品| 久久久人成影片一区二区三区观看| 日韩欧美在线字幕| 午夜欧美大片免费观看| 亚洲综合小说区| 久久天天躁狠狠躁夜夜躁2014| 青草青草久热精品视频在线观看| 在线不卡国产精品| 国产精品一区二区三区在线播放| 亚洲三级黄色在线观看| 精品欧美aⅴ在线网站| 亚洲自拍偷拍视频| 国产精品久久久久久久久久东京| 91精品国产乱码久久久久久蜜臀| 疯狂蹂躏欧美一区二区精品| 911国产网站尤物在线观看| 亚洲人成在线观看| 日韩精品在线免费观看| 欧美一区深夜视频| 日韩美女免费线视频| 欧美激情三级免费| 久久伊人精品天天| 久久天堂av综合合色| 亚洲天堂男人天堂女人天堂| 亚洲xxxxx电影| 亚洲久久久久久久久久| 中文字幕欧美亚洲| 啊v视频在线一区二区三区| 国产一区二区在线免费视频| 日韩中文av在线| 日韩精品视频免费| 久久久精品网站| 中文字幕av一区二区| 91久久在线播放| 国产精品久久久久久久久久久久久| 中文字幕欧美精品日韩中文字幕| 国产欧美一区二区白浆黑人| 亚洲精品91美女久久久久久久| 成人久久精品视频| 在线观看不卡av| 欧美高清理论片| 7777kkkk成人观看| 免费成人高清视频| 欧美巨乳在线观看| 国产精品爱啪在线线免费观看| 亚洲成人999| 日韩一级裸体免费视频| 中文字幕国产精品久久| 亚洲男人天堂2023| 在线观看中文字幕亚洲| 日韩欧美国产免费播放| 亚洲女人天堂成人av在线| 亚洲国产成人91精品|