Redis教程02[五大數據]

本文介紹redis中的五大基本數據類型及經常使用命令 |數據類型 | 說明 | |--|--| | String | 是Redis中最基本的數據類型,二進制安全的,它能夠包含任意數據類型。如圖片。Redis中String類型的數據上限的512M。 | |List | Redis列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素到列表的頭部(左邊)或者尾部(右邊)一個列表最多能夠包含 232 - 1 個元素 (4294967295, 每一個列表超過40億個元素)。 | | Hash | 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。Redis 中每一個 hash 能夠存儲 232 - 1 鍵值對(40多億)。 | | Hash | Set 是 String 類型的無序集合。集合成員是惟一的,這就意味着集合中不能出現重複的數據。Redis 中集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是 O(1)。集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。 | | ZSet | 有序集合和集合同樣也是string類型元素的集合,且不容許重複的成員。不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。有序集合的成員是惟一的,但分數(score)卻能夠重複。集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)。 集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。|正則表達式

啓動redis服務並登錄客服端 在這裏插入圖片描述redis

string介紹

通用命令

五種數據類型的數據結構差別因此命令也不一樣,可是也有一些相通的命令,在這裏簡單介紹: 建立一個簡單的k/v對數據庫

127.0.0.1:6379> set name xn
OK

在redis中默認有16個數據庫,編號0-15,正常狀況下,用戶登錄後首先看到的是0號數據庫,能夠手動換到其餘數據庫:數組

select

127.0.0.1:6380> set name zhangsan
OK
127.0.0.1:6380> select 4
OK
127.0.0.1:6380[4]> get name
(nil)
127.0.0.1:6380[4]> select 0
OK
127.0.0.1:6380> get name
"zhangsan"

del命令

該命令用於存在key刪除key安全

127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> del name
(integer) 0

dump命令

序列化key,並返回被序列化的值數據結構

127.0.0.1:6379> dump name
"\x00\x03dpb\t\x00\xe5\xa2\xc4\xd1\xfc\xb2\xd9\xcb"
127.0.0.1:6379> dump name1
(nil)

若是key不存在就返回nildom

exists命令

檢查key是否存在3d

127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists name1
(integer) 0

1表示存在,o表示不存在code

ttl命令

以秒爲單位,返回key的剩餘時間對象

127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> ttl name1
(integer) -2

-2表示key不存在,-1表示沒有設置有效時間,不會過時,咱們能夠經過EXPIRE key 設置有效時間

expire命令

是指有效時間,單位爲秒

127.0.0.1:6379> expire name 120
(integer) 1
127.0.0.1:6379> ttl name
(integer) 112
127.0.0.1:6379> ttl name
(integer) 10
127.0.0.1:6379> ttl name
(integer) 7
127.0.0.1:6379> ttl name
(integer) -2

112是剩餘的有效時間

pexpire命令

一樣是設置過時時間,只是單位爲毫秒

127.0.0.1:6379> pexpire name 100
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2

-2就表示已經不存在了

pttl

和ttl命令同樣,只是返回單位爲毫秒

127.0.0.1:6379> pexpire name 100000
(integer) 1
127.0.0.1:6379> ttl name
(integer) 91
127.0.0.1:6379> pttl name
(integer) 84601

keys

經過正則表達式查找符合條件的key

127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> set sex 男
OK
127.0.0.1:6379> set address 深圳
OK
127.0.0.1:6379> keys *
1) "age"
2) "address"
3) "sex"

key * 查詢全部的key

randomkey命令

從當前數據庫隨機返回一個key

127.0.0.1:6379> randomkey
"address"
127.0.0.1:6379> randomkey
"age"
127.0.0.1:6379> randomkey
"sex"
127.0.0.1:6379> randomkey
"age"

type命令

返回key對應的數據類型

127.0.0.1:6379> type name
none
127.0.0.1:6379> type age
string
127.0.0.1:6379> type sex
string

不存在的返回none

rename命令

修改key的名稱

127.0.0.1:6379> rename age age1
OK
127.0.0.1:6379> exists age
(integer) 0
127.0.0.1:6379> exists age1
(integer) 1

flushdb

清空當前庫

flushall

清空全部庫

string類型之BIT

Redis中字符串的存儲方式都是以二進制的方式存儲的。 好比:

127.0.0.1:6379> set k1 a
OK

k1的值爲a,對應的ascii碼是97,轉換爲二進制就是01100001。BIT命令就是對這個二進制數據進行操做的 | 命令 | 說明 | |--|--| |getbit | 獲取二級制中對應偏移量的值 | |setbit | 設置對應二進制位的值 | |bitcount | 統計二進制中位中爲1的個數 | | bitop |對二進制數據作位元操做,與,或,非,異或操做 | |bitpos | 返回字符串裏面第一個被設置爲1或者0的bit位|

GetBit命令

用於key所儲存的字符串值,獲取指定偏移量的爲(bit)

127.0.0.1:6379> set k1 a
OK
127.0.0.1:6379> getbit k1 0
(integer) 0
127.0.0.1:6379> getbit k1 1
(integer) 1
127.0.0.1:6379> getbit k1 2
(integer) 1
127.0.0.1:6379> getbit k1 3
(integer) 0
127.0.0.1:6379> getbit k1 4
(integer) 0
127.0.0.1:6379> getbit k1 5
(integer) 0
127.0.0.1:6379> getbit k1 6
(integer) 0
127.0.0.1:6379> getbit k1 7
(integer) 1

當偏移量 OFFSET 比字符串值的長度大,或者 key 不存在時,返回 0

SetBit命令

用於對 key 所儲存的字符串值,設置或清除指定偏移量上的位(bit),返回的結果是該位上原來的bit值。好比咱們設置 k1爲a,k2爲c,a對應的ASCII碼爲97(01100001),c對應的ASCII碼爲99(01100011),相差了一個1,如此咱們就能夠經過setbit來調整

127.0.0.1:6379> set k2 c
OK
127.0.0.1:6379> get k1
"a"
127.0.0.1:6379> get k2
"c"
127.0.0.1:6379> setbit k1 6 1
(integer) 0
127.0.0.1:6379> get k1
"c"

如此咱們就將k1的值快速調整爲了c

BitCount命令

用來統計二進制中爲1的個數,好比a(97 01100001)爲3,c(99 01100011)爲4.

127.0.0.1:6379> get k1
"a"
127.0.0.1:6379> get k2
"c"
127.0.0.1:6379> bitcount k1
(integer) 3
127.0.0.1:6379> bitcount k2
(integer) 4

BitOp命令

對一個或多個保存二進制位的字符串 key 進行位元操做,並將結果保存到 destkey 上。BITOP 命令支持 AND(與) 、 OR(或) 、 NOT(非) 、 XOR(異或)運算。好比a 01100001和c 01100011進行相關運算

127.0.0.1:6379> get k1
"a"
127.0.0.1:6379> get k2
"c"
127.0.0.1:6379> bitop and k3 k1 k2
(integer) 1
127.0.0.1:6379> get k3
"a"
127.0.0.1:6379> bitop or k4 k1 k2
(integer) 1
127.0.0.1:6379> get k4
"c"
127.0.0.1:6379> bitop xor k5 k1 k2
(integer) 1
127.0.0.1:6379> get k5
"\x02"

not運算注意參數個數

127.0.0.1:6379> bitop not k6 k1
(integer) 1
127.0.0.1:6379> get k6
"\x9e"

BitPos命令

返回字符串裏面第一個被設置爲1或者0的bit位。 返回一個位置,把字符串當作一個從左到右的字節數組,第一個符合條件的在位置0,其次在位置8,等等。仍是以a爲例01100001

127.0.0.1:6379> bitpos k1 1
(integer) 1
127.0.0.1:6379> bitpos k1 0
(integer) 0

其餘五個命令就不一一演示

Hash介紹

在實際開發過程當中咱們確定會碰到不少須要存儲對象的需求,此時hash就比較合適了。hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。 Redis 中每一個 hash 能夠存儲 232 - 1 鍵值對(40多億)。

命令 說明
hset 設置key中字段的值
hget 獲取key中字段的值
hmset 批量設置key中的字段
hmget 批量獲取key中字段的值
hdel 刪除key中指定的字典
hsetnx 設置key中的字段的值,若是字段存在就忽略
hvals 獲取key中全部的字段的值
hkeys 獲取key中的全部的字段
hgetall 獲取key中的全部的字段及值
hexists 判斷key中的字段是否存在
hincrby 將key中的字段增長特定的值
hincrbyfloat 和hincrby相似增長的float類型的數據
hlen 獲取key中的字段的個數
hstrlen 獲取key中某個字段的值得長度

List類型命令介紹

列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素到列表的頭部(左邊)或者尾部(右邊) 一個列表最多能夠包含 232 - 1 個元素 (4294967295, 每一個列表超過40億個元素)。 | 命令 | 說明 | |--|--| |lpush| 向列表頭部添加一個或多個元素| |lrange| 獲取列表中指定的元素0第一個,-1最後一個| |rpush |向列表尾部添加一個或多個元素| |llen |獲取列表長度| |lset |經過index設置列表的值| |rpop |移除列表最後一個元素,並返回| |lpop |移除列表頭部元素,並返回| |lindex |獲取列表中對應下標的值| |ltrim |截取列表對應的元素| |blpop |lpop的阻塞版| |brpop |rpop的阻塞版| |rpoplpush |移除一個列表的最後一個元素,並將該元素添加到另外一個列表的頭部| |brpoplpush | rpoplpush的阻塞版本|

Set集合命令介紹

集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員) | 命令 |說明 | |--|--| |sadd |添加一個或多個元素到集合中,若是集合中存在該元素則忽略| |scard | 返回集合中的元素的個數| |sismember |判斷集合中是否含有某元素| |smembers |獲取集合中的全部的元素| |srem | 刪除集合中指定的元素| |srandmember | 隨機返回集合中的元素,版本2.6後在命令以後能夠跟一個count。指定隨機返回的元素個數| |spop |和srandmember相似,只是spop會將獲取的元素移除而srandmember不會移除元素| |smove | 將元素從一個集合移動到另外一個集合中| |sdiff |返回兩個集合的差集| |sdiffstore | 和sdiff相似,不一樣的是會將差集結果保存起來| |sinter| 獲取兩個集合的交集| |sinterstore |和sinter相似,不一樣的是將結果保存起來了| |sunion | 獲取兩個集合的並集| |sunionstore | 獲取兩個集合的並集並保存起來|

Zset集合命令介紹

有序集合和集合同樣也是string類型元素的集合,且不容許重複的成員。 不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。 有序集合的成員是惟一的,但分數(score)卻能夠重複

命令 說明
zadd 向有序集合中添加一個或多個 分數/元素對
zscore 獲取有序集合中元素對應的分數
zrange 獲取集合中的元素,若是加上withscores則會連同分數一併返回
zrevrange 和zrange相似,只是將結果倒序了
zcard 返回集合中元素的個數
zcount 統計集合中分數在min和max之間的元素個數
zrangebyscore 能夠根據score範圍查找元素
zrank 獲取元素在集合中的排名,從小到大,最小的是0
zrevrank 獲取元素在集合中的排序,從大到小
zincrby 給元素增長分數,若是不存在就新建立元素,並賦予對應的分數
zinterstore 計算給定的一個或多個有序集的交集並將結果集存儲在新的有序集合 key 中
zrem 從集合中彈出一個元素
zlexcount 計算有序集合中指定字典區間內成員數量
zrangebylex 獲取指定區間的元素,分數必須相同
相關文章
相關標籤/搜索