Redis五大數據類型 補充:常用命令 Ping ping下redis Dbsize 查看當前資料庫的key的數量 Select 1 切換到下標為1的資料庫中 Flushdb 清空當前庫key Flushall 清空全部庫key Redis鍵的操作(常用): 查看當前資料庫的所有key: Keys ...
Redis五大數據類型
補充:常用命令
Ping ping下redis
Dbsize 查看當前資料庫的key的數量
Select 1 切換到下標為1的資料庫中
Flushdb 清空當前庫key
Flushall 清空全部庫key
Redis鍵的操作(常用):
查看當前資料庫的所有key:
Keys *
判斷當前key是否存在:
exists name
將當前key移動到2號庫中:
Move name 2
設置key在6秒後過期:
expire name 6
查看當前key還有多久過期
ttl name
查看當前key是什麼結構的類型
type name
String 類型(常用)
String是redis最基本的類型,可以理解成一個key對應一個value。
String類型是二進位安全帶額,意思是redis的string可以包含任何數據,比如jpg圖片或者序列化對象。
一個redis中字元串value最多可以是512M
操作:
set name oyr: 給鍵name設置值為oyr
get name: 獲取鍵name的值
del name: 刪除建為name值
append name 123: 在name對應的值後面追加123
strlen name: 得到當前name對應的值的長度
incr age:age+1 一定要是數字才能操作
incrby age 10:age+10
decr age:age-1 一定要是數字才能操作
decrby age 10: age-10
setex name 10 oyr:
(set with expire)
設置key為name,過期時間為10秒,值為oyr
sexnx name ooo:
(sex if not exist)
設置鍵位name,值為ooo,只有不存在的時候才會設置進去
mset k1 v1 k2 v2 k3 v3: 一次設置多個值
mget k1 k2 k3: 一次獲取多個值
msetnx k1 v1 k2 v2 k3 v3: 一次設置多個值,如果有一個鍵是存在的那麼全部失效。
Hash 類型(常用)
Redis hash 是一個鍵值對集合。
Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
類似Java裡面的Map<String,Object>
K-V模式不變,但V是一個鍵值對
操作:
(1)hset
hset user name oyr 給鍵user的name屬性設置值
(2)hget
hget user name 獲取鍵user的name值
(3)hmset
hmset user age 18 sex nan 同時設置多個值
(4)hmget
hmget user name age sex 同時獲取多個屬性值
(5)hgetall
hgetall user 獲取鍵user中的所有鍵和值
(6)hdel
hdel user name 刪除鍵user中的name屬性
(7)hlen
hlen user 獲取鍵user下有幾個屬性
(8)hexists
hexists user nane 判斷鍵user下是否有name屬性
(9)hkeys
hkys user 獲取鍵user下的所有屬性
(10)hvals
hvals user 獲取鍵user下的所有值
(11)hsetnx
hsetnx user name "oyr" 如果user對象里存在 name 屬性,則不做操作,不存在,創建並賦值。
(12)hincrby
hincrby user age 10 給鍵user里的age 屬性添加10
Lists 類型(雙向鏈表)
Redis 列表是簡單的字元串列表,按照插入順序排序。你可以添加一個元素導列表的頭部(左邊)或者尾部(右邊)。
它的底層實際是個鏈表,而且是雙向鏈表。註意:先進後出,後進先出
操作:
lpush list1 a b c d 給list1鏈表添加數據a b c d,從頭部添加
lrange list1 0 -1 獲取list1鏈表所有數據
rpush list2 1 2 3 給鏈表list2尾部插入元素
lpop list1 出棧 mylist,出棧後,元素消失(從頭部出)
rpop list1 出棧 mylist,出棧後,元素消失(從尾部出)
lindex list1 3 獲取鏈表的3索引位置的值
list1 獲取list1 鏈表的長度
lset list2 2 s 給鏈表索引2的位置設置值為 s
lrem list3 2 d 刪除鏈表2個d元素
ltrim list2 2 5 從索引2截取到索引5,其他元素被遺棄
linsert list2 before/after s u 在鏈表f元素前面或者後面插入 h 元素
rpoplpush list1 list2 從list1鏈表中尾部出站,出棧元素添加給list2鏈表
lists性能總結:
它是一個字元串鏈表,left、right都可以插入添加;
如果鍵不存在,創建新的鏈表;
如果鍵已存在,新增內容;
如果值全移除,對應的鍵也就消失了。
鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了。
Set 類型(不能重覆)
Redis的Set是string類型的無序集合。它是通過HashTable實現實現的,
操作:
sadd set1 a b c d 給set1集合添加元素
smembers set1 查看set1集合的所有元素
sismember set1 a 判斷set1集合中是否有a元素
scard set1 獲取集合set1 的元素個數
srem set1 a 刪除集合set1中的元素(可以一次刪除多個)
srandmember set2 3 在集合set2中隨機出3個元素
diff set3 set4 差集,取set3中存在但是set4中不存在的元素
sinter set3 set4 交集,取set3和set4都存在的元素
sunion set3 set4 並集
Sortedsets 類型
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重覆的成員。
不同的是每個元素都會關聯一個double類型的分數。
redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重覆。
操作:
zadd zset1 60 a 70 b 80 c 90 d 100 f 給zset1 有序集合設置元素,同時設置元素分數。
zrange zset1 0 -1 withscores 查詢集合所有元素,0:開始,-1:結束,withscores顯示分數
zrange zset1 0 2 查詢集合下標0到下標2的元素
zcount zset1 70 90 統計分數在 70 到 90 之間元素,閉區間。
zcount zset1 (70 90 統計分數在70到90之間元素,左邊開區間,右邊閉區間
zcount zset1 -inf +inf 統計所有元素 -inf:最小值 +inf:最大值
根據分數查詢12到19集合,從坐標0開始。每頁顯示1條,12-19都是閉區間:
zrangebyscore mysset 12 19 withscores limit 0 1
zrem zset1 a b 集合刪除元素a b
五大數據類型操作結束