原生redis命令
一、 redis-cli 連接 redis
進入redis安裝目錄
cd /usr/local/bin
進入redis客戶端
./redis-cli -p 6379
-h 用於指定 ip
-p 用於指定埠
-a 用於指定認證密碼
退出客戶端
quit
指定 database,默認16個資料庫
select 3
二、 redis-cli 操作 redis 五種數據類型
1、操作 String
單條操作
SET key value //存入字元串鍵值對 GET key //獲取一個字元串鍵值 DEL key [key ...] //刪除一個鍵
批量操作
MSET key value [key value ...] //批量存儲字元串鍵值對 MGET key [key ...] //批量獲取字元串鍵值
存入一個不存在的字元串鍵值對,返回1代表成功,返回0代表失敗;可用於作為分散式鎖
SETNX key value //存入一個不存在的字元串鍵值對
設置一個鍵的過期時間(秒)
EXPIRE key seconds
原子加減,可用於統計閱讀量,生成分散式系統全局序列號等功能
INCR key //將key中儲存的數字值加1
DECR key //將key中儲存的數字值減1
INCRBY key increment //將key所儲存的值加上increment
DECRBY key decrement //將key所儲存的值減去decrement
2、操作 hash
單條操作
HSET key field value //存儲一個哈希表key的鍵值 HGET key field //獲取哈希表key對應的field鍵值 HDEL key field [field ...] //刪除哈希表key中的field鍵值
批量操作
HMSET key field value [field value ...] //在一個哈希表key中存儲多個鍵值對 HMGET key field [field ...] //批量獲取哈希表key中多個field鍵值 HLEN key //返回哈希表key中field的數量 HGETALL key //返回哈希表key中所有的鍵值
存入一個不存在的hash鍵值對,返回1代表成功,返回0代表失敗;可用於作為分散式鎖
HSETNX key field value //存儲一個不存在的哈希表key的鍵值
為哈希表key中field鍵的值加上增量increment
HINCRBY key field increment
Hash結構優缺點
優點 1)同類數據歸類整合儲存,方便數據管理 2)相比string操作消耗記憶體與cpu更小 3)相比string儲存更節省空間 缺點 過期功能不能使用在field上,只能用在key上 Redis集群架構下不適合大規模使用
3、操作 list
添加操作(可用於微博消息和微信公號消息)
LPUSH key value [value ...] //將一個或多個值value插入到key列表的表頭(最左邊) RPUSH key value [value ...] //將一個或多個值value插入到key列表的表尾(最右邊) LRANGE key start stop //返回列表key中指定區間內的元素,區間以偏移量start和stop指定
彈出操作
LPOP key //移除並返回key列表的頭元素 RPOP key //移除並返回key列表的尾元素 BLPOP key [key ...] timeout //從key列表表頭彈出一個元素,若列表中沒有元素,阻塞等待 timeout秒,如果timeout=0,一直阻塞等待 BRPOP key [key ...] timeout //從key列表表尾彈出一個元素,若列表中沒有元素,阻塞等待 timeout秒,如果timeout=0,一直阻塞等待
4、操作 set
Set常用操作 SADD key member [member ...] //往集合key中存入元素,元素存在則忽略,若key不存在則新建 SREM key member [member ...] //從集合key中刪除元素 SMEMBERS key //獲取集合key中所有元素 SCARD key //獲取集合key的元素個數 SISMEMBER key member //判斷member元素是否存在於集合key中 SRANDMEMBER key [count] //從集合key中選出count個元素,元素不從key中刪除 SPOP key [count] //從集合key中選出count個元素,元素從key中刪除 Set運算操作 SINTER key [key ...] //交集運算 SINTERSTORE destination key [key ..] //將交集結果存入新集合destination中 SUNION key [key ..] //並集運算 SUNIONSTORE destination key [key ...] //將並集結果存入新集合destination中 SDIFF key [key ...] //差集運算 SDIFFSTORE destination key [key ...] //將差集結果存入新集合destination中
常用操作可用於微信小程式抽獎,微信微博點贊,收藏等場景
集合操作實現微博微信關注模型
5、操作ZSet有序集合
ZSet常用操作 ZADD key score member [[score member]…] //往有序集合key中加入帶分值元素 ZREM key member [member …] //從有序集合key中刪除元素 ZSCORE key member //返回有序集合key中元素member的分值 ZINCRBY key increment member //為有序集合key中元素member的分值加上increment ZCARD key //返回有序集合key中元素個數 ZRANGE key start stop [WITHSCORES] //正序獲取有序集合key從start下標到stop下標的元素 ZREVRANGE key start stop [WITHSCORES] //倒序獲取有序集合key從start下標到stop下標的元素 Zset集合操作 ZUNIONSTORE destkey numkeys key [key ...] //並集計算 ZINTERSTORE destkey numkeys key [key …] //交集計算
Zset集合操作實現排行榜
5、其他高級命令
keys:全量遍歷鍵,用來列出所有滿足特定正則字元串規則的key,當redis數據量比較大時, 性能比較差,要避免使用
scan:漸進式遍歷鍵
scan 參數提供了三個參數,第一個是 cursor 整數值(hash桶的索引值),第二個是 key 的正則模式, 第三個是一次遍歷的key的數量(參考值,底層遍歷的數量不一定),並不是符合條件的結果數量。
第 一次遍歷時,cursor 值為 0,然後將返回結果中第一個整數值作為下一次遍歷的 cursor。一直遍歷 到返回的 cursor 值為 0 時結束;
注意:但是scan並非完美無瑕, 如果在scan的過程中如果有鍵的變化(增加、 刪除、 修改) ,那 么遍歷效果可能會碰到如下問題: 新增的鍵可能沒有遍歷到, 遍歷出了重複的鍵等情況, 也就是說 scan並不能保證完整的遍歷出來所有的鍵, 這些是我們在開發時需要考慮的。
Info:查看redis服務運行資訊,分為 9 大塊,每個塊都有非常多的參數,這 9 個塊分別是:
- Server 伺服器運行的環境參數
- Clients 客戶端相關資訊
- Memory 伺服器運行記憶體統計數據
- Persistence 持久化資訊
- Stats 通用統計數據
- Replication 主從複製相關資訊
- CPU CPU 使用情況
- Cluster 集群資訊
- KeySpace 鍵值對統計數量資訊
退出redis服務:
- pkill redis‐server
- kill 進程號
- redis‐cli shutdown