Redis簡介
Redis 是完全開源的,遵守 BSD 協議,是一個高效能的 key-value 資料庫。
Redis 與其他 key - value 快取產品有以下三個特點:
- Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。
- Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
- Redis支援資料的備份,即master-slave模式的資料備份。
下載安裝Redis5.0.X
以Ubuntu20.4為例
執行安裝命令
sudo apt-get install redis-server
Redis配置檔案
以Ubuntu20.4為例
sudo vim /etc/redis/redis.conf
Redis操作相關命令
部分命令可直接通過鍵盤Tab鍵補全
# 解除安裝命令
sudo apt-get purge --auto-remove redis-server
# 關閉命令
sudo service redis-server stop
# 開啟命令
sudo service redis-server start
# 重啟命令
sudo service redis-server restart
# Redis命令列客戶端
redis-cli
# Redis伺服器
redis-server
# Redis效能測試工具
redis-benchmark
# AOF檔案修復工具
redis-check-aof
# RDB檔案檢查工具
redis-check-rdb
Redis五種資料型別
型別 | 描述 |
---|---|
string | 字串型別 |
hash | 雜湊型別 |
list | 列表型別 |
set | 集合型別 |
zset | 有序集合型別 |
Redis通用命令
- 獲取符合規則的鍵名列表
keys [pattern] # pattern支援glob風格萬用字元格式
符號 | 含義 |
---|---|
? | 匹配一個字元 |
* | 匹配任意個字元 |
[] | 匹配範圍內字元,如a[b-d]可以匹配“ab”、“ac”、“ad” |
\ | 匹配需要轉義字元 |
- 判斷鍵是否存在
exists key # 如果鍵存在則返回整型1,反之返回0
- 刪除鍵
del key [key ...] # 支援批量刪除,返回值為刪除鍵的個數
- 獲取鍵值的資料型別
type key
- 獲取鍵的總數
dbsize
- 設定鍵過期時間
expire key seconds # key在seconds秒後過期
- 查詢當前鍵的剩餘時間
ttl key # 查詢key在多少秒後過期
# 如果返回值為-1,則代表key存在且沒有設定過期時間
# 如果返回值為-2,則代表key已不存在
- 刪除鍵的過期時間
persist key
- 清空所有資料庫資料
flushall
- 清空當前資料庫資料
flushdb
- 切換到指定資料庫
select index # 預設使用0號資料庫
Redis資料型別入門
String(字串型別)常用命令
string可以儲存任何形式的字串,包括二進位制資料。
- 獲取鍵對應的值
get key # 當鍵不存在時會返回空(nil)
- 設定鍵值對
set key value
setnx key value # 鍵不存在時才設定
set key value xx # 鍵存在時才設定(屬更新操作)
- 遞增/遞減數字
incr key # 使當前鍵自增1,並返回自增後的值
decr key # 使當前鍵自減1,並返回自減後的值
incrby key num # 使當前鍵自增num
decrby key num # 使當前鍵自減num
- 獲取字串長度
strlen key # 返回鍵的長度,不存在則返回0
- 向尾部追加值
append key value # 如果鍵不存在則設定新的鍵值,返回值為總長度
- 批量獲取/設定多個鍵值
mget key [key ...] # 獲取
mset key1 value1 key2 value2 ... # 新增
- 獲取字串指定下標的值
getrange key start end
- 設定字串指定下標的值
setrange key index value
Hash(雜湊型別)常用命令
hash 是一個 string 型別的 field(欄位)和 value(值)的對映表,適合用於儲存物件。
- 獲取雜湊屬性對應的值
# 獲取單個屬性對應的值
hget key field
# 獲取多個屬性對應的值
hmget key field [field ...]
# 獲取雜湊所有屬性與值
hgetall key
# 獲取雜湊所以屬性對應的值
hvals key
# 獲取雜湊鍵對應的所有屬性
hkeys key
- 設定雜湊
# 設定單個雜湊
hset key field value
# 設定雜湊屬性,如果屬性已存在,則設定失敗
hsetnx key field value
# 設定雜湊多個屬性值
hmset key field1 value1 field2 value2 ...
- 刪除雜湊屬性
hdel key field
- 判斷雜湊的鍵是否存在某一屬性
hexists key value
- 獲取雜湊屬性數量
hlen key
List(列表型別)常用命令
- 設定列表
# 從列表右側插入值
rpush key value1 value2 ...
# 從列表左側插入值
lpush key value1 value2 ...
# 在列表指定值的前/後插入新值
linsert key before|after value newValue
- 刪除列表指定值
# 從列表左側刪除一個元素
lpop key
# 從列表右側刪除一個元素
rpop key
# 根據count值刪除所有相同值的元素
# (1)count>0,從左到右,刪除最多count個value相等的項
# (2)count<0,從右到左,刪除最多Math.abs(count)個value相等的項
# (3)count=0,刪除所有value相等的項
lrem key count value
# 根據索引範圍修改列表
ltrim key start end
- 獲取列表值
# 獲取列表指定索引範圍內所有元素
# start與end為閉區間
lrange key start end
# 獲取列表指定索引的元素
lindex key index
# 獲取列表長度
llen key
- 修改列表中的值
# 設定列表指定索引對應的值為newValue
lset key index newValue
Set(集合型別)常用命令
- 設定集合
# 向集合鍵中新增元素,如果元素存在,則新增失敗
sadd key element
- 刪除集合中指定元素
# 刪除集合中指定的元素
srem key element
# 從集合中隨機刪除count個元素
# 移除後會返回移除的元素
spop key [count]
- 獲取集合指定值
# 獲取集合的數量
scard key
# 判斷元素是否存在
sismember key element
# 從集合中隨機獲取count個元素
srandmember key [count]
- 集合間的交差並操作
# 獲取集合間的差集
sdiff key1 key2 ...
# 獲取集合間的交集
sinter key1 key2 ...
# 獲取集合間的並集
sunion key1 key2 ...
Zset(有序集合型別)常用命令
- 設定有序集合
zadd key score element
- 刪除有序集合中指定元素
zrem key element
# 刪除指定排名內的升序元素
zremrangebyrank key start end
# 刪除指定分數內的升序元素
zremrangebyscore key minScore maxScore
- 獲取有序集合指定值
# 獲取元素的分數
zscore key element
# 獲取元素總個數
zcard key
# 按照升序排序獲取指定索引範圍內的元素
# WITHSCORES屬性控制是否輸出分數值
zrange key start end [WITHSCORES]
# 按照升序排序獲取指定分數範圍內的元素
zrangebyscore key minScore maxScore [WITHSCORES]
# 獲取有序集合內在指定分數範圍內的個數
zcount key minScore maxScore