Redis常用命令

2020-08-13 20:38:46

1.基於記憶體的key-value數據庫
2.基於c語言編寫的,可以支援多種語言的api //set每秒11萬次,取get 81000次
3.支援數據持久化
4.value可以是string,hash, list, set, sorted set

 

使用場景

 

  1. 去最新n個數據的操作
  2. 排行榜,取top n個數據 //最佳人氣前10條
  3. 精確的設定過期時間
  4. 計數器
  5. 實時系統, 反垃圾系統
  6. pub, sub發佈訂閱構建實時訊息系統
  7. 構建訊息佇列
  8. 快取
  9. cmd存取redis
  10. redis-cli.exe -h 127.0.0.1 -p 6379


key

 

  1.     keys * 獲取所有的key
  2.     select 0 選擇第一個庫
  3.     move myString 1 將當前的數據庫key移動到某個數據庫,目標庫有,則不能移動
  4.     flush db      清除指定庫
  5.     randomkey     隨機key
  6.     type key      型別
  7.     
  8.     set key1 value1 設定key
  9.     get key1    獲取key
  10.     mset key1 value1 key2 value2 key3 value3
  11.     mget key1 key2 key3
  12.     del key1   刪除key
  13.     exists key      判斷是否存在key
  14.     expire key 10   10過期
  15.     pexpire key 1000 毫秒
  16.     persist key     刪除過期時間

string

 

  1.     set name cxx
  2.     get name
  3.     getrange name 0 -1        字串分段
  4.     getset name new_cxx       設定值,返回舊值
  5.     mset key1 key2            批次設定
  6.     mget key1 key2            批次獲取
  7.     setnx key value           不存在就插入(not exists)
  8.     setex key time value      過期時間(expire)
  9.     setrange key index value  從index開始替換value
  10.     incr age        遞增
  11.     incrby age 10   遞增
  12.     decr age        遞減
  13.     decrby age 10   遞減
  14.     incrbyfloat     增減浮點數
  15.     append          追加
  16.     strlen          長度
  17.     getbit/setbit/bitcount/bitop    位元運算

    
hash

  1.     hset myhash name cxx

  2.     hget myhash name
  3.     hmset myhash name cxx age 25 note "i am notes"
  4.     hmget myhash name age note   
  5.     hgetall myhash               獲取所有的
  6.     hexists myhash name          是否存在
  7.     hsetnx myhash score 100      設定不存在的
  8.     hincrby myhash id 1          遞增
  9.     hdel myhash name             刪除
  10.     hkeys myhash                 只取key
  11.     hvals myhash                 只取value
  12.     hlen myhash                  長度

list

  1.     lpush mylist a b c  左插入
  2.     rpush mylist x y z  右插入
  3.     lrange mylist 0 -1  數據集合
  4.     lpop mylist  彈出元素
  5.     rpop mylist  彈出元素
  6.     llen mylist  長度
  7.     lrem mylist count value  刪除
  8.     lindex mylist 2          指定索引的值
  9.     lset mylist 2 n          索引設值
  10.     ltrim mylist 0 4         刪除key
  11.     linsert mylist before a  插入
  12.     linsert mylist after a   插入
  13.     rpoplpush list list2     轉移列表的數據

    
set

  1.     sadd myset redis 
  2.     smembers myset       數據集合
  3.     srem myset set1         刪除
  4.     sismember myset set1 判斷元素是否在集閤中
  5.     scard key_name       個數
  6.     sdiff | sinter | sunion 操作:集合間運算:差集 | 交集 | 並集
  7.     srandmember          隨機獲取集閤中的元素
  8.     spop                 從集閤中彈出一個元素

    
zset

  1.     zadd zset 1 one
  2.     zadd zset 2 two
  3.     zadd zset 3 three
  4.     zincrby zset 1 one              增長分數
  5.     zscore zset two                 獲取分數
  6.     zrange zset 0 -1 withscores     範圍值
  7.     zrangebyscore zset 10 25 withscores 指定範圍的值
  8.     zrangebyscore zset 10 25 withscores limit 1 2 分頁
  9.     Zrevrangebyscore zset 10 25 withscores  指定範圍的值
  10.     zcard zset  元素數量
  11.     Zcount zset 獲得指定分數範圍內的元素個數
  12.     Zrem zset one two        刪除一個或多個元素
  13.     Zremrangebyrank zset 0 1  按照排名範圍刪除元素
  14.     Zremrangebyscore zset 0 1 按照分數範圍刪除元素
  15.     Zrank zset 0 -1    分數最小的元素排名爲0
  16.     Zrevrank zset 0 -1  分數最大的元素排名爲0
  17.     Zinterstore
  18.     zunionstore rank:last_week 7 rank:20150323 rank:20150324 rank:20150325  weights 1 1 1 1 1 1 1

    
    
排序:

  1.     sort mylist  排序
  2.     sort mylist alpha desc limit 0 2 字母排序
  3.     sort list by it:* desc           by命令
  4.     sort list by it:* desc get it:*  get參數
  5.     sort list by it:* desc get it:* store sorc:result  sort命令之store參數:表示把sort查詢的結果集儲存起來

訂閱與發佈:

  1.     訂閱頻道:subscribe chat1
  2.     發佈訊息:publish chat1 "hell0 ni hao"
  3.     檢視頻道:pubsub channels
  4.     檢視某個頻道的訂閱者數量: pubsub numsub chat1
  5.     退訂指定頻道: unsubscrible chat1   , punsubscribe java.*
  6.     訂閱一組頻道: psubscribe java.*

    
redis事物:
     隔離性,原子性, 
     步驟:  開始事務,執行命令,提交事務
             multi  //開啓事務
             sadd myset a b c
             sadd myset e f g
             lpush mylist aa bb cc
             lpush mylist dd ff gg

伺服器管理
    dump.rdb
    appendonly.aof
    //BgRewriteAof 非同步執行一個aop(appendOnly file)檔案重寫
    會建立當前一個AOF檔案體積的優化版本
    
    //BgSave 後臺非同步儲存數據到磁碟,會在當前目錄下建立檔案dump.rdb
    //save同步儲存數據到磁碟,會阻塞主進程,別的用戶端無法連線
    
    //client kill 關閉用戶端連線
    //client list 列出所有的用戶端
    
    //給用戶端設定一個名稱
      client setname myclient1
      client getname
      
     config get port
     //configRewrite 對redis的組態檔進行改寫rdb save 900 1save 300 10save 60 10000aop備份處理appendonly yes    開啓持久化appendfsync everysec  每秒備份一次命令:bgsave非同步儲存數據到磁碟(快照儲存)lastsave返回上次成功儲存到磁碟的unix的時間戳shutdown同步儲存到伺服器並關閉redis伺服器bgrewriteaof檔案壓縮處理(命令)