最近在學《Redis入門指南 (第2版)》,我個人平時也比較喜歡整理技術文檔,接下來就把我學習 Redis入門指南 做的記錄分享出來,以便以後查看和回顧。有錯誤的地方,還望大家批評指正,謝謝。
pdf文檔鏈接:https://pan.baidu.com/s/1SxThSMvsEofs7HNNkntlRQ 提取碼:9fz1
Redis入門的其他博客鏈接如下,如果嫌麻煩的化,可以直接下載我的文檔:《Redis入門指南 (第2版)》整理出的Redis教程
1. 5大數據結構
很多文章都會說,redis支持5種常用的數據類型,這其實是存在很大的歧義。redis裏存的都是二進制數據,其實就是字節數組(byte[]),這些字節數據是沒有數據類型的,只有把它們按照合理的格式解碼後,可以變成一個字符串,整數或對象,此時才具有數據類型。(摘至:微信公衆號中的文章 - 喫透了這些Redis知識點,面試官一定覺得你很NB )
1.1 string 字符串
- set mset
- get mget
- incr,當鍵不存在時,初始爲0;incrby key increment,返回增加後的鍵的值
- decr decrby
- incrbyfloat key increment ,增加指定浮點數
- append key value,向尾部追加值,返回值的長度
- strlen key 獲取字符串長度
- getrange key start end 返回key中字符串值得子字符
- getset key value 設置新值,返回舊值
- 位操作
- setex key seconds value,設置key的過期時間
- setnx key value,只有key不存在時設置key的值
1.2 hash 散列
String類型的field和value的映射表,hash特別適合用於存儲對象
- hset | hmset key field value []
- hget | hmget key field
- hgetall key
- hexists key field 判斷字段是否存在
- hsetnx key field value 當字段不存在時賦值
- hincrby key field value 增加數字
- hdel key field [field…] 刪除字段
- hkeys key;hvals key 只獲取字段名或字段值
- hlen key 獲得字段數量
- hincrby key field increment
1.3 list 列表
簡單的字符串列表,按照插入順序排序。可以添加一個元素到列表的頭部(左邊)或者尾部(右邊);索引左邊從0開始,右邊從-1開始
- lpush rpush
- lrange key start stop;0 -1 獲取所有
- lpop rpop
- llen 列表元素個數
- lrem key count value,刪除列表中前count個值爲value 的元素
- lindex key index 獲取指定索引的元素值,下標從0 開始
- lset key index value 設置指定索引的元素值
- ltrim key start end 保留列表指定片段
- linsert key before|after pivot value,在指定元素povit的前面或者後面插入元素
- rpoplpush 將元素從一個列表轉換到另一個列表(彈出一個元素)
1.4 set 集合
String類型的無序集合,集合成員是唯一的。
- sadd | srem key member
- smembers key 獲取集合中的所有元素
- sismember key member 判斷元素是否在集合中
- 集合間運算
- sdiff key [key...],差集
- sinter key [key...],交集
- sunion key [key...],並集
- scard 獲得集合中元素個數
- sdiffstore | sinterstore | sunoinstore destination key [key ...],進行集合運算並將結果存儲
- srandmember key [count] 隨機獲取集合中的元素
- spop 隨機彈出一個元素
- srem key member1 member2,移除集合中一個或多個元素
- smove source destination member,將member元素從source集合移動到destination集合
1.5 zset|sorted set 有序集合
有序集合和無序集合一樣也是String類型元素的集合,且不允許重複的成員;不同的是每個元素都會關聯一個double類型的分數,redis正是通過分數來爲集合中的成員進行從小到大的排序;有序集合的成員是唯一的,但分數(score)卻可以重複
- zadd key score member [score member],增加元素,也可以用該命令修改分數
- zscore key member 獲得元素的分數
- 獲得排序在某個範圍的元素列表
- zrange key start stop [withscores] start|stop都是索引,從0開始。升序
- zrevrange key start stop [withscores] 降序
- zrangebyscore key min max [withscores] [limit offset count] 獲取指定分數範圍的元素(包括min和max)
- zincrby key increment member 增加某個元素的分數
- zcard key 獲得集合中元素的數量
- zcount key min max 獲得指定分數範圍內的元素個數
- zrem key member [member...] 刪除一個或多個元素
- zremrangebyrank key start stop 按照排名範圍刪除元素 [start, stop]
- zremrangebyscore key min max 按照分數範圍刪除元素
- 獲的元素的排名
- zrank key member
- zrevrank key member
- 有序集合的交集
1.6 其他命令
- keys pattern 獲得複合規則的鍵名列表 keys * 獲取所有鍵
- exists key 判斷一個鍵是否存在
- del key 刪除鍵
- type key 獲得鍵值的數據類型
- flushdb 清除當前庫中的所有key
- flushall 刪除所有數據庫的所有key