redis類型
- redis一共分為五種基本資料類型:
。String、Hash、List、Set、ZSet
- 檢視redis指令幫助
help 指令名
String類型
String類型是包含很多種類型的特殊類型,并且是二進制安全的。比如序列化的對象進行存儲,比如一張圖檔進行二進制存儲,比如一個簡單的字元串,數值等。
set、get和del方法:
- 設定值:
set name redis
- 取值:
get name
- 删除值:
del name
使用setnx (not exist)
- 表示如果不存在key進行設定,傳回1。存在就不需要設定了,傳回0
:> setnx name aa
(integer)
使用setex (expired)
-
設定color的有效期為10秒,10秒傳回set color 10 red
(在redis中nil
表示nil
)null
使用setrange 替換字元串
-
替換字元串set mail [email protected]
(5表示從第幾位開始替換,不包含開始位置,後面跟上替換的字元串),如下圖:setrange mail 5 abc
一次性設定或者擷取多個值 mset、mget
方法
mset、mget
-
mset k1 123 k2 abc k3 ofg
-
mget k1 k2 k3
一次性擷取設定 getset
方法
getset
-
先傳回k4的值然後設定k4的值為getset k4 abcd
abcd
incr和decr方法
- 對某個值進行遞增和遞減。
incr age
decr age
incrby和decrby方法
- 對某個值指定長度的遞增和遞減。
-
增加5incrby age 5
-
減少6decrby age 6
append方法追加字元串
-
append key value
-
為key為name的值追加nosqlappend name nosql
strlen方法擷取key的長度
-
傳回該key的value的長度strleng key
Hash類型
Hash
類型是
String
類型的field和value的映射表,或者說一個
String
集合。它特别适合存儲對象,相比而言,将一個對象類型存儲在
Hash
類型裡要比存儲在String類型裡占用更少的記憶體空間,并友善存取整個對象。
設定和擷取Hash方法
- 通過
設定hset
類型的值。Hash
表示設定hset user id 1
的值為Hash
,裡面有user
為key
,id
為1。value
- 通過
擷取hget
類型的值。Hash
表示擷取hget user id
的值為Hash
中user
為key
的值。id
- 也可以批量設定和擷取值。通過
和hmset user id 2 name zs age 20 sex man
hmget user id name age sex
Hash類型的其他常用方法
- hsetnx:這個和
類似,表示如果不存在就設定,存在就不設定。setnx
- hincrby:集合遞增,類似于
。incrby
- hexists:是否存在key,如果存在傳回值,不存在傳回0
- hlen:傳回hash集合裡面的所有鍵數值。
- hdel:删除指定hash中的字段。
- hkeys:傳回hash中的所有key。
- hvales:傳回hash中的所有value。
- hgetall:傳回hash裡的所有key和value。
List類型
List
類型是一個連結清單結構的集合,其主要功能有push、pop、擷取元素等。更加具體來說,List類型是一個雙連結清單的結構,我們可以通過相關操作在集合的頭部和尾部進行操作,List的可以作為棧,也可以作為隊列。
lpush和lrange方法
-
從頭部加入元素(棧)先進後出,傳回集合中元素個數。lpush
向名為lpush list hello
集合中添加list
。hello
-
擷取棧的元素,傳回集合中的元素。lrange
擷取lrange list 0 -1
集合全部元素。list
rpush方法
-
方法從尾部加入元素,先進先出。rpush
向集合rpush list2 hello
中添加list2
hello
-
擷取集合中的元素。lrang
linsert方法
- 插入元素。
linsert num before three two
lset方法
- 将指定下标的元素替換掉。從0開始
lrem方法
- 删除元素,傳回删除元素個數
ltrim方法
- 保留指定範圍内的元素,截取集合
lpop方法
- 從list的頭部删除元素,并傳回删除元素
rpop方法
- 從list的尾部删除元素,并傳回删除元素
Set類型
Set集合是String類型的無序集合,Set是通過HashTable實作的,對集合我們可以取交集、并集、差集。
sadd方法
- 向名稱為key的set中添加元素。
也可以批量添加sadd set1 abc
sadd set1 abc bdf
- set集合不允許添加重複元素。
smembers方法
- 檢視set集合元素。
srem方法
- 删除set集合元素
spop方法
- 随機傳回删除的member
sdiff方法
- 傳回兩個集合的不同元素,哪個集合在前面就以哪個集合為标準。
sdiffstore方法
- 将傳回的不同元素存儲到另一個集合裡。
sinter方法
- 兩個集合取交集。
sinterstore方法
- 傳回交集結果,存儲到另一個集合中
sunion方法
- 取并集。
sunionstore方法
- 取并集,并存儲到另一個集合中
smove方法
- 從一個set集合移動到另一個set集合,相當于剪切複制。
scard方法
- 傳回集合的元素個數,
scard 集合名
sismember方法
- 判斷某元素是否為集合中的元素,傳回1代表是集合中的元素,0代表不是
srandmember方法
- 随機傳回一個元素
zset集合類型
set集合的更新版,集合是有序的。
zadd方法
- 向有序集合中添加一個元素,該元素如果存在,則更新順序。在重複插入的時候,會根據順序屬性更新。
zrange方法
- 檢視zset集合資料。
zrem方法
- 删除名稱為key的zset中的元素member
zincrby方法
- 以指定值去自增或自減,用法和incrby類似
zrangebyscore方法
- 找到指定區間範圍的資料進行傳回。
zremrangebyrank方法
- 删除索引範圍的member
zremrangebyscore方法
- 删除指定序号,通過分數範圍删除,包含頭、包含尾
zrank方法
- 傳回排序序号,從0開始
zrevrank方法
- 傳回排序索引,從大到小的順序,從0開始
zrangebyscore 方法
- 找到指定區間的資料并傳回
- 通過上圖我們可以看出
和zrange
方法的差別是,一個通過索引範圍查找,一個通過分數範圍查找zrangebyscore
zcard方法
- 傳回集合中所有元素的個數
zcount方法
- 傳回集合中score在給定區間的數量