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
127.0.0.1:6379> setnx name aa
(integer) 0
使用setex (expired)
set color 10 red
設置color的有效期爲10秒,10秒返回nil
(在redis中nil
表示null
)
使用setrange 替換字符串
set mail [email protected]
替換字符串setrange mail 5 abc
(5表示從第幾位開始替換,不包含開始位置,後面跟上替換的字符串),如下圖:
一次性設置或者獲取多個值mset、mget
方法
mset k1 123 k2 abc k3 ofg
mget k1 k2 k3
一次性獲取設置getset
方法
getset k4 abcd
先返回k4的值然後設置k4的值爲abcd
incr和decr方法
- 對某個值進行遞增和遞減。
incr age
decr age
incrby和decrby方法
- 對某個值指定長度的遞增和遞減。
incrby age 5
增加5decrby age 6
減少6
append方法追加字符串
append key value
append name nosql
爲key爲name的值追加nosql
strlen方法獲取key的長度
strleng key
返回該key的value的長度
Hash類型
Hash
類型是String
類型的field和value的映射表,或者說一個String
集合。它特別適合存儲對象,相比而言,將一個對象類型存儲在Hash
類型裏要比存儲在String類型裏佔用更少的內存空間,並方便存取整個對象。
設置和獲取Hash方法
- 通過
hset
設置Hash
類型的值。hset user id 1
表示設置Hash
的值爲user
,裏面有key
爲id
,value
爲1。 - 通過
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在給定區間的數量