Redis入門及常用命令學習

kangyz發表於2021-12-19

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通用命令

  1. 獲取符合規則的鍵名列表
keys [pattern] # pattern支援glob風格萬用字元格式
符號 含義
? 匹配一個字元
* 匹配任意個字元
[] 匹配範圍內字元,如a[b-d]可以匹配“ab”、“ac”、“ad”
\ 匹配需要轉義字元
  1. 判斷鍵是否存在
exists key # 如果鍵存在則返回整型1,反之返回0
  1. 刪除鍵
del key [key ...] # 支援批量刪除,返回值為刪除鍵的個數
  1. 獲取鍵值的資料型別
type key
  1. 獲取鍵的總數
dbsize
  1. 設定鍵過期時間
expire key seconds # key在seconds秒後過期
  1. 查詢當前鍵的剩餘時間
ttl key # 查詢key在多少秒後過期
# 如果返回值為-1,則代表key存在且沒有設定過期時間
# 如果返回值為-2,則代表key已不存在
  1. 刪除鍵的過期時間
persist key
  1. 清空所有資料庫資料
flushall
  1. 清空當前資料庫資料
flushdb
  1. 切換到指定資料庫
select index # 預設使用0號資料庫

Redis資料型別入門

String(字串型別)常用命令

string可以儲存任何形式的字串,包括二進位制資料。

  1. 獲取鍵對應的值
get key # 當鍵不存在時會返回空(nil)
  1. 設定鍵值對
set key value

setnx key value # 鍵不存在時才設定

set key value xx # 鍵存在時才設定(屬更新操作)
  1. 遞增/遞減數字
incr key # 使當前鍵自增1,並返回自增後的值

decr key # 使當前鍵自減1,並返回自減後的值

incrby key num # 使當前鍵自增num

decrby key num # 使當前鍵自減num
  1. 獲取字串長度
strlen key # 返回鍵的長度,不存在則返回0
  1. 向尾部追加值
append key value # 如果鍵不存在則設定新的鍵值,返回值為總長度
  1. 批量獲取/設定多個鍵值
mget key [key ...] # 獲取

mset key1 value1 key2 value2 ... # 新增
  1. 獲取字串指定下標的值
getrange key start end
  1. 設定字串指定下標的值
setrange key index value

Hash(雜湊型別)常用命令

hash 是一個 string 型別的 field(欄位)和 value(值)的對映表,適合用於儲存物件。

  1. 獲取雜湊屬性對應的值
# 獲取單個屬性對應的值
hget key field

# 獲取多個屬性對應的值
hmget key field [field ...]

# 獲取雜湊所有屬性與值
hgetall key

# 獲取雜湊所以屬性對應的值
hvals key

# 獲取雜湊鍵對應的所有屬性
hkeys key
  1. 設定雜湊
# 設定單個雜湊
hset key field value

# 設定雜湊屬性,如果屬性已存在,則設定失敗
hsetnx key field value

# 設定雜湊多個屬性值
hmset key field1 value1 field2 value2 ...
  1. 刪除雜湊屬性
hdel key field
  1. 判斷雜湊的鍵是否存在某一屬性
hexists key value
  1. 獲取雜湊屬性數量
hlen key

List(列表型別)常用命令

  1. 設定列表
# 從列表右側插入值
rpush key value1 value2 ...

# 從列表左側插入值
lpush key value1 value2 ...

# 在列表指定值的前/後插入新值
linsert key before|after value newValue
  1. 刪除列表指定值
# 從列表左側刪除一個元素
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
  1. 獲取列表值
# 獲取列表指定索引範圍內所有元素
# start與end為閉區間
lrange key start end

# 獲取列表指定索引的元素
lindex key index

# 獲取列表長度
llen key
  1. 修改列表中的值
# 設定列表指定索引對應的值為newValue
lset key index newValue

Set(集合型別)常用命令

  1. 設定集合
# 向集合鍵中新增元素,如果元素存在,則新增失敗
sadd key element
  1. 刪除集合中指定元素
# 刪除集合中指定的元素
srem key element

# 從集合中隨機刪除count個元素
# 移除後會返回移除的元素
spop key [count]
  1. 獲取集合指定值
# 獲取集合的數量
scard key

# 判斷元素是否存在
sismember key element

# 從集合中隨機獲取count個元素
srandmember key [count]
  1. 集合間的交差並操作
# 獲取集合間的差集
sdiff key1 key2 ...

# 獲取集合間的交集
sinter key1 key2 ...

# 獲取集合間的並集
sunion key1 key2 ...

Zset(有序集合型別)常用命令

  1. 設定有序集合
zadd key score element
  1. 刪除有序集合中指定元素
zrem key element

# 刪除指定排名內的升序元素
zremrangebyrank key start end

# 刪除指定分數內的升序元素
zremrangebyscore key minScore maxScore
  1. 獲取有序集合指定值
# 獲取元素的分數
zscore key element

# 獲取元素總個數
zcard key

# 按照升序排序獲取指定索引範圍內的元素
# WITHSCORES屬性控制是否輸出分數值
zrange key start end [WITHSCORES]

# 按照升序排序獲取指定分數範圍內的元素
zrangebyscore key minScore maxScore [WITHSCORES]

# 獲取有序集合內在指定分數範圍內的個數
zcount key minScore maxScore

相關文章