五大數據類型常用的命令(此處只介紹常用命令更多命令請參考https://www.redis.net.cn/tutorial/3505.html):
Key(鍵):
keys * 查看當前庫全部key名稱。
exists key 判斷某個key是否存在。存在返回1,不存在返回0。
move key db 把當前庫某個key移到指定庫。
expire key second 為指定的key設置過期時間,單位為秒。
ttl key 查看指定key還有多少秒過期,-1表示永不過期,-2表示已過期(如果過期該key會被移出庫)。
type key 查看你的key是什么數據類型。
del [key...] 刪除指定key,可同時刪除多個。
1.string(字符串):
string類型是redis最基本的數據類型,redis中一個字符串value最多可以是512M。
string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象。
set 設置一個key-value。
get 獲取一個key的value。
del 刪除一個或多個key-value。
append 對指定key的value追加值。
strlen 獲取指定key的value的長度。
incr 對指定key的value每次加1。 一定要是數字才能進行加減。
decr 對指定key的value每次減1。 一定要是數字才能進行加減。
incrby 對指定key的value每次加n(數量可指定)。 一定要是數字才能進行加減。
decrby 對指定key的value每次減n(數量可指定)。 一定要是數字才能進行加減。
getrange 獲取指定key的value的指定區間范圍內的值,類似於java的substring。
setrange 設置指定key的value的指定區間范圍內的值,原區間范圍的值會被覆蓋。
setex(set with expire) 設置一個key-value並指定該key的過期時間(秒)。
setnx(set if not exist) 設置一個key-value,如果該key存在則不設置,如果不存在則設置。
mset 設置一個或多個key-value。
msetnx 設置一個或多個key-value,如果key都不存在則設置,如果其中有一個key存在則不設置。
mget 獲取一個或多個key的value。
getset 獲取一個key(key必須存在)並設置該key的值,返回原來的值。
2.hash(哈希,類似java里的Map):
redis hash 是一個鍵值對集合。redis hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
類似Java里面的Map<String,Object>。KV模式不變,但V是一個鍵值對。
hset 添加一個hash集合並往里面添加一對KV。
hget 獲取hash集合某個Key的數據。
hmset 添加一個hash集合並往里面添加N對KV。
hmget 獲取hash集合N個Key的數據。
hgetall 獲取hash集合全部的KV數據。
hdel 移除hash集合中的N個Key。
hlen 獲取hash集合中Key的數量。
hexists 判斷hash集合中某個Key是否存在。
hkeys 獲取hash集合全部Key。
hvals 獲取hash集合全部Value。
hincreby 給hash集合中的某個key加N。 一定要是數字才能加,加整數。
hincrebyfloat 給hash集合中的某個key加N。 一定要是數字才能加,加整數或小數。
hsetnx 添加一個hash集合並往里面添加一對KV(如果key不存在則添加,存在則不添加)。
3.list(列表):
redis list 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。它的底層實際是個鏈表。
說明:l(left)、r(right),將結構理解為棧,l表示棧頂、r棧底。
lpush 添加一個list列表,將一個或多個值插入到列表頭部,先進后出。
rpush 添加一個list列表,將一個或多個值插入到列表尾部,先進先出。
lrange 獲取list列表指定區間范圍內的值。
lpop 移除list列表頂部元素(第一個元素),並返回被移除的元素。
rpop 移除list列表底部元素(最后一個元素),並返回被移除的元素。
lindex 按照頂部索引下標獲得元素。
llen 獲取list列表的長度。
lrem 移除list列表N個value。(lrem key count value)。
ltrim 截取list列表指定范圍內的值后再賦值給list列表(原值將被截取值覆蓋)。
rpoplpush 將指定列表的底部元素移到目標列表的頂部。
lset 設置列表指定下標的值。
linsert 在指定列表的某個元素前面或后面添加元素。(linsert key before/after 列表中的元素 添加的元素)。
list列表總結:
它是一個字符串鏈表,left、right都可以添加。
如果鍵不存在,創建新的鏈表。
如果鍵已存在,新增內容。
如果值全移除,對應的鍵也就消失了。
鏈表的操作無論是頭和尾效率都極高,但假如是對中間元素進行操作,效率就比較低了。
4.set(集合):
redis set是string類型的無序集合。它是通過HashTable實現的。
sadd 將一個或多個成員插入到set集合中。
smembers 遍歷set集合。
sismember 判斷指定元素是否是set集合的成員。
scard 獲取set集合中元素的個數。
srem 移除set集合中N個元素。
srandmember 隨機獲取set集合中N個元素。
spop 隨機移除set集合中N個元素並返回被移除的元素。
smove 將指定集合中的某個元素移到目標集合中。
sdiff 集合的減集。
sinter 集合的交集。
sunion 集合的並集。
5.zset(sorted set:有序集合):
redis zset 和 set 一樣也是string類型元素的集合,且不允許重復的成員。不同的是每個元素都會關聯一個double類型的分數。
redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重復。
zadd 將一個或多個成員插入到zset集合中。(zadd key 分數 值...)例如:[zadd zset1 80 zhangsan]。
zrange 獲取zset集合指定區間范圍內的值(zrange key start stop [withscores])。加withscores可查看分數與值
zrangebyscore 獲取zset集合指定分數范圍內的值(zrangebyscore key [(]min [(]max [limit offset count]),“(”表示不包含。
zrem 移除zset集合中N個元素。
zcard 獲取zset集合中元素的個數(不包含分數,分數和元素是一體的)。
zcount 獲取zset集合指定分數范圍內的個數。
zrank 獲取zset集合某個元素的下標。
zscore 獲取zset集合某個元素對應的分數。
zrevrank 逆序獲取zset集合某個元素的下標。
zrevrange 逆序獲取zset集合指定區間范圍內的值。
zrevrangebyscore 逆序獲取zset集合指定分數范圍內的值。