redis 從入門到放棄

2021-10-06 15:36:01 字數 4124 閱讀 2697

keys

- ping 測試客戶機與伺服器的連線

- info 檢視環境資訊,比如客戶端數量等

- config get * 檢視系統配置資訊

- dbsize 有多少個key

- keys * 檢視所有key

- del key 刪除指定key

- type key 返回 key 所儲存的值的型別。

- expire key time_in_seconds 指定key在指定時間後失效單位秒

string
1. set key value 將字串值 value 關聯到 key 。 如果 key 已經持有其他值,set 就覆寫舊值,無視型別。

2. incr key 將 key 中儲存的數字值增一。

3. incrby key increment 將 key 所儲存的值加上增量 increment。

4. decrby key decrement 將 key 所儲存的值減去減量 decrement。

key
1. del key 刪除給定的乙個或多個 key,不存在的 key 會被忽略

2. decr key 將 key 中儲存的數字值減一。

list
1. rpush key value [value ...] 將乙個或多個值 value 插入到列表 key 的表尾 (最右邊)。

2. lrange key start stop 返回列表 key 中指定區間內的元素,區間以偏移量 start 和 stop 指定。下標 (index) 引數 start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第乙個元素,以 1 表示列表的 第二個元 素,以此類推。

你也可以使用負數下標,以 -1 表示列表的最後乙個元素,-2 表示列表的倒數第二個元素,以此類推

3. lpush key value [value ...]

將乙個或多個值 value 插入到列表 key 的表頭

如果有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表頭:比如說,對空列表 mylist

執行命令 lpush mylist a b c ,列表的值將是 c b a ,這等同於原子性地執行 lpush mylist a 、lpush

mylist b 和 lpush mylist c 三個命令。

如果 key 不存在,乙個空列表會被建立並執行lpush 操作。

4. lpop key 移除並返回列表 key 的頭元素。

5. lset key index value 將列表 key 下標為 index 的元素的值設定為 value 。

6. lindex key index 返回列表 key 中,下標為 index 的元素。

7. ltrim key start stop 對乙個列表進行修剪 (trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪 除。

8. lrem key count value 根據引數 count 的值,移除列表中與引數 value 相等的元素。

set
1. sadd key member [member ...] 將乙個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元		素將被忽略。

假如 key 不存在,則建立乙個只包含 member 元素作成員的集合。

當 key 不是集合型別時,返回乙個錯誤。

2. smembers key 返回集合 key 中的所有成員。 不存在的 key 被視為空集合。

3. srem key member [member ...] 移除集合 key 中的乙個或多個 member 元素,不存在的 member 元素會被忽略。

4. spop key 移除並返回集合中的乙個隨機元素。

5. smove source destination member 將 member 元素從 source 集合移動到 destination 集合。

6. scard key返回集合 key 的基數 (集合中元素的數量)

7. sunion key [key ...] 返回乙個集合的全部成員,該集合是所有給定集合的並集。

8. sinter key [key ...] 返回乙個集合的全部成員,該集合是所有給定集合的交集。

zset(sortedset)
1. zincrby key increment member 為有序集 key 的成員 member 的 score 值加上增量 increment 。

2. zrevrange key start stop 其中成員的位置按 score 值遞減 (從大到小) 來排列

3. zcard key 返回有序集 key 的基數。

4. zcount key min max 返回有序集 key 中,score 值在 min 和 max 之間 (預設包括 score 值等於 min 或 max ) 的成員的數量。

5. zrank key member 返回有序集 key 中成員 member 的排名。其中有序集成員按 score 值遞增 (從小到大) 順序排列。 排名以 0 為底,也就是說,score 值最小的成員排名為 0 。

6. zrevrange key start stop [withscores] 逆序

7. zscore key member 返回有序集 key 中,成員 member 的 score 值。

hash
1.  hdel key field [field ...] 刪除雜湊表 key 中的乙個或多個指定域,不存在的域將被忽略。

2. hexists key field 檢視雜湊表 key 中,給定域 field 是否存在。

3. hget key field 返回雜湊表 key 中給定域 field 的值。

4. hgetall key 返回雜湊表 key 中,所有的域和值。

5. hkeys key 返回雜湊表 key 中的所有域。

6. hmget key field [field ...] 返回雜湊表 key 中,乙個或多個給定域的值。

transaction(事務)

redis的事務與傳統的acid是不同的,redis的事務就是在乙個事務中執行多個命令,要麼都成功,要麼都執行,要麼都不執行,並且沒有回滾的機制

1. multi 標記乙個事務塊的開始。事務塊內的多條命令會按照先後順序被放進乙個佇列當中,最後由exec 命令原子性 (atomic) 地執行

2. exec 執行所有事務塊內的命令。

3. discard 取消事務,放棄執行事務塊內的所有命令。

redis 儲存rdb與aof
1. rdb 是一種snapshort機制的儲存,即系統每隔一段時間,把redis中的所有資料,做一次全部備份,資料寫入rdb檔案中. 優點:rdb是一種緊湊的資料檔案,在資料恢復的時候不會出錯,而且速度比aof塊.缺點:但是rdb每次都是全量備份資料,資料量很大時,一次備份需要很長的時間.容易丟失最新的資料

2. aof 是一種增量備份資料的方式,一般系統會1秒鐘做一次aof資料備份.優點:出現災難時,資料丟失較少.缺點:aof檔案容易出現錯誤,而且恢復速度較慢

jedis 初試

jedis 連線redis

原始碼請檢視馬雲鏈結

redis 實現排序思路

比如,頁面上有乙個圖書列表,需要通過出版時間降序展示.

首先用hash《主鍵,詳情》 存放所有的圖書資訊,key為bookhash. 然後 用zset存放所有圖書的主鍵,其中score的值為出版時間,key為bookset.

查詢的時候,首先 zrevrang bookset 0 -1 得到乙個 list bookids ,然後遍歷bookids,得到bookid, hget bookhash bookid ,就這樣乙個乙個去查,就得到了排序後的book集合

統計訪問次數

通過zincrby key 1 bookid ,實現訪問次數的統計

通過list資料結構儲存,key為bookcommon-00x ,因為list是有序的,讓後就可以用 rrang 查詢

首先通過lrange bookcommon-00x 0 -1 得到集合,然後再遍歷這個集合,通過commid找到那條common,然後+1.最後 lset key index value 覆蓋原來的值

Redis常見問題,從入門到放棄

1 為什麼使用redis 在專案中主要是為了解決效能和併發問題,當然redis還具備做分布式鎖的功能,但如果只是為了分布式鎖,完全可以用其他的中介軟體 如zookeeper 代替,並不是非要用redis。2 使用redis有什麼缺點 先更新資料庫,再更新快取 先刪除快取,再更新資料庫 先更新資料庫,...

kmp從入門到放棄

標籤 kmp 擴充套件kmp 給你兩個字串,你需要回答,b串是否是a串的子串 a串是否包含b串 a aaaaaaaaaaaaaaaaaaaaaaaaaab b aaaaaaaab 最壞狀態 o mn 一般做法 for 列舉b在a串中的起始位置 for 向後比較ab是否相等 o n m 傳說中的kmp...

beego 從入門到放棄

beego 的專案基本都是通過 bee命令來建立的,所以在建立專案之前確保你已經安裝了 bee 工具和 beego。如果你還沒有安裝,那麼請查閱 beego 的安裝 和 bee 工具的安裝 現在一切就緒我們就可以開始建立專案了,開啟終端,進入 gopath src 所在的目錄 建立乙個專案名為201...