bat获取命令返回值_redis中list和hash的基本命令和使用场景
Redis的數(shù)據(jù)類型
Redis的數(shù)據(jù)類型共有五種:string,list,hash,set,zset;
String 字符串相對來說做平常,key-value,類似是hashmap的用法;
List 隊列,可以雙向的存值,設計時,也可以簡單用來當隊列模式;
Hash 字典,一個key 對應多個值;
Set 無序的集合;
Zset 有序的集合;列表 list
Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素導列表的頭部(左邊)或者尾部(右邊)列表 list——基本命令
lpush
語法:lpush key value [value?]
作用:將一個或多個值 value 插入到列表 key 的表頭(最左邊),從左邊開始加入值,從左到右的順序依次插入到表頭
返回值:數(shù)字,新列表的長度
rpush
語法:rpush key value [value?]
作用:將一個或多個值 value 插入到列表 key 的表尾(最右邊),各個 value 值按從左到右 的順序依次插入到表尾
返回值:數(shù)字,新列表的長度
lrange
語法:lrange key start stop
作用:獲取列表 key 中指定區(qū)間內的元素,0 表示列表的第一個元素,以 1 表示列表的第二個元素;
start ,
stop 是列表的下標值,也可以負數(shù)的下標, -1 表示列表的最后一個元素, -2 表示列表的倒 數(shù)第二個元素,以此類推。
start ,stop 超出列表的范圍不會出現(xiàn)錯誤。
返回值:指定區(qū)間的列表
lindex
語法:lindex key index
作用:獲取列表 key 中下標為指定 index 的元素,列表元素不刪除,只是查詢。
0 表示列表的第一個元素,以 1 表示列表的第二個元素;
start ,
stop 是列表的下標值,也可以負數(shù)的下標, -1 表示列表的最后一個元素, -2 表示列表的倒數(shù)第二個元素,以此類推。
返回值:指定下標的元素;index 不在列表范圍,返回nil
llen
語法:llen key
作用:獲取列表 key 的長度 返回值:數(shù)值,列表的長度; key 不存在返回0
lrem
語法:lrem key count value
作用:根據(jù)參數(shù)count的值,移除列表中與參數(shù)value相等的元素,
count>0,從列表的左側向右開始移 除;
count<0從列表的尾部開始移除;
count=0 移除表中所有與value相等的值。
返回值:數(shù)值,移除的元素個數(shù)
lset
語法:lset key index value
作用:將列表 key 下標為 index 的元素的值設置為 value。
返回值:設置成功返回 ok ; key 不存在或者 index 超出范圍返回錯誤信息
linsert
語法:linsert key BEFORE(前)|AFTER(后) pivot value
作用:
將值value插入到列表key當中位于值pivot之前或之后的位置。
key不存在,pivot不在列表中, 不執(zhí)行任何操作。
返回值:命令執(zhí)行成功,返回新列表的長度。沒有找到 pivot 返回 -1, key 不存在返回 0。
RPOP key
移除列表的最后一個元素,返回值為移除的元素。
RPOPLPUSH source destination
移除列表的最后一個元素,并將該元素添加到另一個列表并返回
LPOP key
移除列表的第一個元素,返回值為移除的元素。
使用場景
1. 消息隊列
隊列模式的情況下,可以使用,左進右出的原則,但不建議使用,因為現(xiàn)在市面上有很多成熟的消息中間件,沒有必要造輪子;
2.排行榜
某一段時間統(tǒng)計數(shù)據(jù)的排行榜可以放在list里面,需要分頁的話,也可以使用lrange start stop實現(xiàn);
3. list類型的lpush命令和lrange命令能實現(xiàn)最新列表的功能,每次通過lpush命令往列表里插入新的元素,然后通過lrange命令讀取最新的元素列表,如朋友圈的點贊列表、評論列表。
但是,并不是所有的最新列表都能用list類型實現(xiàn),因為對于頻繁更新的列表,list類型的分頁可能導致列表元素重復或漏掉,舉個例子,當前列表里由表頭到表尾依次有(E,D,C,B,A)五個元素,每頁獲取3個元素,用戶第一次獲取到(E,D,C)三個元素,然后表頭新增了一個元素F,列表變成了(F,E,D,C,B,A),此時用戶取第二頁拿到(C,B,A),元素C重復了。只有不需要分頁(比如每次都只取列表的前5個元素)或者更新頻率低(比如每天凌晨更新一次)的列表才適合用list類型實現(xiàn)哈希類型hash
redis hash是一個 string 類型的 field 和 value 的映射表,hash特別適合用于存儲對象,每個 hash 可以存儲 232 - 1鍵值對(40多億);哈希類型hash——基本命令hset /hget /hmset /hmget /hgetall /hkeys /hvals /hexists
hset
語法:hset hash 表的key field value
作用:將哈希表 key 中的域 field 的值設為value ,如果 key 不存在,則新建 hash 表,執(zhí)行賦值,如果有 field ,則覆蓋值。
返回值: ①如果 field 是 hash 表中新field,且設置值成功,返回 1 ②如果 field 已經存在,舊值覆蓋新值,返回0
hget
語法:hget key field
作用:獲取哈希表 key 中給定域 field 的值
返回值:field 域的值,如果 key 不存在或者 field 不存在返回nil
hmset
語法:hmset key field value [field value?]
說明:同時將多個field-value(域-值)設置到哈希表key中,此命令會覆蓋已經存在的field, hash表key不存在,創(chuàng)建空的hash表,執(zhí)行hmset.
返回值:設置成功返回ok, 如果失敗返回一個錯誤
hmget
語法:hmget key field [field?]
作用:獲取哈希表key中一個或多個給定域的值
返回值:返回和field順序對應的值,如果field不存在,返回nil
hgetall
語法:hgetall key
作用:獲取哈希表key中所有的域和值
返回值:以列表形式返回hash中域和域的值 ,key不存在,返回空hash
hdel
語法:hdel key field [field?]
作用:刪除哈希表 key 中的一個或多個指定域 field,不存在 field 直接忽略
返回值:成功刪除的 field 的數(shù)量
hkeys
語法:hkeys key
作用:查看哈希表 key 中的所有 field 域
返回值:包含所有 field 的列表,key 不存在返回空列表
hvals
語法:hvals key
作用:返回哈希表中所有域的值 返回值:包含哈希表所有域值的列表,key 不存在返回空列表
hexists
語法:hexists key field
作用:查看哈希表 key 中,給定域 field 是否存在
返回值:如果 field 存在,返回 1, 其他返回0使用場景
1、購物車
以用戶id為key,商品id為field,商品數(shù)量為value,恰好構成了購物車的3個要素,如下圖所示。
2、hash還是比較適合存儲對象(key field value)或者是字典表(type,key,vlaue),剛好符合對象的要素,但string + json也可以存儲,兩則比較有什么區(qū)別?
String + json Hash
效率很 高 高
容量 低 低
靈活性 低 高
序列化 簡單 復雜
2人點贊
redis
作者:liuwj的ing
鏈接:https://www.jianshu.com/p/17d01b8b3e84
來源:簡書
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。
總結
以上是生活随笔為你收集整理的bat获取命令返回值_redis中list和hash的基本命令和使用场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue中rules校验是验证首字符_小白
- 下一篇: 阿里云 mysql 双主_mysql数据