04 Redis 數據類型 & 常見命令

Redis支持五種數據類型

  • string (字符串)
  • hash (哈希)
  • list (列表)
  • set (集合)
  • zset (sorted set:有序集合)

注意 key 不要太長,最好不要超過1024字節,可以也不要太短,最好統一命名規範;

1. String(字符串)

string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。
string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。
string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。
常見命令

# 賦值
set key value
#範例
set usernmae 大喬

# 取值
get key
# 範例
get username

# 取值賦值(先取值,然後在修改對應key的值)
getset key value
#範例
getset username 小喬

# 刪除值
del key
# 範例
del username


# 數值遞增一(對應值不存在默認0在加一,如果存在一個字符串就報錯)
incr key
# 範例
incr num

# 數值遞減(遞減一,值不存在默認0在減一)
decr key
#範例
decr num

# 將指定的value 增加指定的值(值不存在就默認是0,值是字符串就報錯)
incrby key value
#範例
incrby num 5


# 將指定的value 減指定的值(值不存在就默認是0,值是字符串就報錯)
decrby key value
#範例
decrby num 10

# 字符串拼接(存在就拼接,不存在就創建)
append key value
#範例
append name aaa

set key value 是在Redis 中存儲一個值;get key 獲取對應key 的值。多個相同key 最後一個key會將前面的覆蓋掉。

注意:一個鍵最大能存儲512MB

2. Hash (哈希)

Redis hash 是一個鍵值對集合。Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。類似Java裏面的Map<String,Object>

# 賦值
hset key field value
#範例
hset myhash username tom
hset myhash age 18

# 取值
hget key field
# 範例
hget myhash age
# 一次取多個值
hget myhash username age
#獲取屬性和屬性值
hgetall myhash

# 刪除
hdel key field
# 範例(返回0 表示值在hash中不存在)
hdel myhash age

# 刪除整個集合
del key
# 範例
del myhash

# 給Hash中數字類型的值進行增加操作
hincrby key field value
# 範例
hincrby myhash age 10   # 給myhash集合中的age 值加10

# 判斷指定中key中某個屬性是否存在,存在返回1
hexists key field
# 範例
hexista myhash password

# 獲取指定key中所有的屬性和值
hgetall key 
# 範例
hgetall myhash

# 獲取指定key中所有的屬性
hkeys key
# 範例
hkeys myhash

# 獲取指定key中所喲的值
hvals key
# 範例
hvals myhash

# 獲取指定key的長度
hlen key
# 範例
hlen myhash

注意:每個 hash 可以存儲 2的32次方 - 1 個鍵值對(40多億)。

3. List (列表)

Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。

語法

# 左側添加[集合不存在就創建,存在就添加]
lpush key value [value...]
# 範例
lpush list a b c d e f g

# 右側添加
rpush key value [value...]
# 範例
rpush list2 1 2 3 4 5

# 查看list列表
lrange key start stop
# 範例
lrange list 1 4

# 左邊彈出[獲取集合左邊的第一個元素。彈出後集閤中此數據不存在]
lpop key 
# 範例
lpop list

# 右邊彈出
rpop key 
# 範例
rpop list

# 獲取list集合長度[集合不存在就返回0]
llen key
# 範例
llen list

# 僅當關聯的集合中存在的時候,在關聯的集合中頭部插入一個值
lpushx  key value
# 範例
lpushx list 5

# 僅當關聯key存在時候在對應的集合右邊插入一個值
rpushx key value
# 範例
rpushx list 10

# 移除指定集合中指定的值[count 是負數從後面開始遍歷]
lrem key count value
# 範例
lrem list 

注意 列表最多可存儲 2 的 23次方 - 1元素 (4294967295, 每個列表可存儲40多億)。

4. Set (字符串集合)

Redis的Set是string類型的無序集合。它是通過HashTable實現實現的。

# 添加元素
sadd key member [member ...]
# 範例
sadd myset a b c

# 刪除元素
srem key member [member ...]
srem myset a b

# 查看 set 中所有的值
smembers key
# 範例
smembers myset

# 判斷參數中是否有指定的值[0-不存在;1-存在]
sismember key member 
# 範例
sismember myset 8

# 差集運算。和key的順序有關
sdiff key [key ...]
# 範例
sadd myal a b c
sadd mybl a c 1 2
sdiff myal mybl

5. zset(sorted set:有序字符串集合)

zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯一個double類型的分數。
redis正是通過分數來爲集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。

sorted-set 和set區別

  1. sorted-set 中添加,刪除,跟新一個元素效率高。
  2. sorted-set 中的成員在集合中的位置是有序的
# 添加元素[元素存在就用新分數替代就分數]
zadd key 分數 元素 分數 元素 ......
# 範例
zadd mysort 70 zhangsan 80 wangwu

# 獲得分數
zscore key 元素
# 範例
zscore mysort zhangsan

# 獲取zset數量
zcard key
# 範例
zcard mysort

# 刪除某個元素
zrem key member [member ...]
# 範例
zrem mysort wangwu

6. 通用命令

6.1 查看所有key

keys *

6.2 like 查詢

keys my?

查看一my開頭的所有key

6.3 刪除指定的某個key

del key [key key ....]

刪除指定的一個key或者多個key

6.4 判斷某個key是否存在

exists key

查看指定的可以是否存在;1-存在;0-不存在。

6.5 對key設置過期時間(單位秒)

expire key 時間

6.6 查看指定key剩餘時間

ttl key

6.7 獲取指定key的類型

type key

6.8 不同數據切換

select index

6.9 移動指定key到不同的數據中(move)

move key index

6.9 清空數據

flushall
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章