Redis學習 - 基礎篇
一. 簡介
Redis 是一個高性能的key-value數據庫,常用的數據類型如下:string,list,set,zset,hash
二. 安裝
Widows和Linux下如何安裝Redis-CSDN博客
三. 常用命令
配置及數據庫操作
命令 | 說明 |
---|---|
config get [config_name] | 獲取指定的配置信息( * 查看全部) |
info [info_name] | 查看redis服務器信息 |
select [db_number] | 切換到指定數據庫(0 - 15) |
key的操作
命令 | 說明 |
---|---|
set [key] [value] | |
del [key] | |
rename [key] [newKeyName] | 改名 |
keys [pattern] | |
exists [key] | |
expire [key] [seconds] | 設置key的過期時間 |
persist [key] | 取消key的過期時間 |
ttl [key] | 查看key的過期時間(-1表示永久,-2表示不存在) |
move [key] [db] | 移動 key 去別的庫 |
type [key] | 查看key的類型 |
四. 常用數據類型
1. String
命令 | 說明 |
---|---|
增 | |
set [key] [value] | |
setnx [key] [value] | 不存在時才創建 |
setex [key] [seconds] [value] | 設指定過期時間的字符串鍵值對 |
mset [key1] [value1] … | 批量增加/修改 |
刪 | |
del [key] | |
改 | |
mset [key1] [value1] … | 批量增加/修改 |
append [key] [append_value] | 追加內容 |
incr [key] | 將value增加1 |
decr [key] | 將value減少1 |
查 | |
get [key] | |
msget [key1] … | 批量獲取 |
getrange [key] [start] [end] | 獲取截斷字符串 |
strlen [key] | 返回對應 value 的長度 |
2. Hash
Hash用來存對象,命令類似于String : h + XXX
命令 | 說明 |
---|---|
增 | |
hset [key] [field] [value] | |
hsetnx [key] [field] [value] | 不存在時才插入 |
hmset [key] [field1] [value1] … | 批量插入 |
刪 | |
hdel [key] [field] … | 批量刪除field |
查 | |
hget [key] [field] | 獲取指定的field的value值 |
hgetall [key] | 獲取所有field的value值 |
hvals [key] | 獲取所有的value值 |
hlen [key] | 獲取field的數量 |
hkeys [key] | 獲取所有field值 |
3. List
雙頭隊列
命令 | 說明 |
---|---|
增 | |
lpush [key] [value1] … | 隊頭插入 |
rpush [key] [value1] … | 隊尾插入 |
刪 | |
lpop [key] | 隊頭出 |
rpop [key] | 隊尾出 |
lrem [key] [count] [value] | 從隊頭到隊尾刪除指定數量的值為value的元素(0表示全部刪除,否則刪除的數量為絕對值的count) |
改 | |
lset [key] [index] [newValue] | 將指定index的值改為newValue |
查 | |
lindex [key] [index] | 獲取指定索引的元素(隊頭為0) |
lrange [key] [start] [end] | 從隊頭往隊尾輸出 |
llen [key] | 列表大小 |
4. Set
類似于Java的HashSet<String>
命令 | 說明 |
---|---|
增 | |
sadd [key] [value1] … | 單個/批量插入 |
刪 | |
srem [key] [value1]… | 單個/批量刪除 |
查 | |
sismember [key] [value] | 是否包含指定value |
smembers [key] | 遍歷輸出所有元素 |
scard [key] | 輸出長度 |
集合操作 | |
sinter [key1] [key2] … | 取交集 |
sinterstore [key] [key1] [key2] … | 取后面集合的交集存到key所在set |
sdiff [key1] [key2]… | 取差集 |
sunion [key1] [key2]… | 取并集 |
sunionstore [key] [key1] [key2] … | 取后面集合的并集存到key所在set |
5. Sorted Set
HashMap<String, Integer>
命令 | 說明 |
---|---|
增 | |
zadd [key] [score1] [member1] … | 單個/批量插入 |
刪 | |
zrem [key] [member1] … | 單個/批量刪除 |
zremrangebyscore [key] [min] [max] | 刪除指定分數區間的元素 |
zremrangebyrank [key] [start] [end] | 刪除指定索引范圍的元素(按升序排名的) |
改 | |
zincrby [key] [increment] [member] | 給member加上increment分 |
查 | |
zrange [key] [start] [end] [withscores] | 按分數升序輸出指定索引區間的元素 (加了withscores分數也輸出) |
zrevrange [key] [start] [end] [withscores] | 按分數降序輸出指定索引區間的元素(加了withscores分數也輸出) |
zrangebyscore [key] [min] [max] [withscores] | 按照分數區間升序輸出元素 |
zcount [key] [min] [max] | 獲取指定分數區間的元素數量 |
zrank [key] [member] | 獲取指定member的索引(按照分數升序的排名 - 1) |
zrevrank [key] [member] | 獲取指定member的索引(按照分數降序的排名 - 1) |
zcard [key] | 獲取長度 |
五. 消息的訂閱發布
開兩個客戶端(兩個cmd窗口,執行redis-cli.exe),一個作為訂閱方,一個作為發布方
訂閱方
SUBSCRIBE redisChat
發布方
publish redisChat "hello"
下圖為執行結果,左邊為訂閱方,右邊為發布方:
命令 | 說明 |
---|---|
pubscribe [pattern1] … | 訂閱單個/多個頻道 |
UNSUBSCRIBE [pattern1]… | 退訂單個/多個頻道 |
publish [pattern] [message] | 將message發布到pattern頻道 |
pubsub channels | 查看訂閱的頻道 |
六. 事務
和數據庫事務差不多
命令 | 說明 |
---|---|
multi | 標記事務開始 |
exec | 執行事務中的所有命令 |
discard | 取消事務 |
watch [key]… | 下次事務執行前,如果這些key的內容被修改了,則打斷事務 |
unwatch | 取消所有的watch |