- redis 下載(docker 安裝) 和命令
拉取 redis 鏡像(alpine 是經典版)
docker pull redis:4-alpine
把本機的6379映射到虛擬的6379
docker run -it -p 6379:6379 --name redis(名字) redis:4-alpine(下載的鏡像名)
進入redis
docker exec -it redis /bin/sh
與redis進行交互
redis-cli
一. Redis特性
-
速度快
基於內存, C語言實現, 單線程架構, 集性能和優雅於一身的代碼
-
基於鍵值對的數據結構服務器
REmote DIctionary Server. 值可以是字符串/哈希/列表/集合/有序集合, Bitmap等等
-
豐富的功能
鍵過期功能. 發布-訂閱功能(實現消息系統), Lua腳本, 簡單的事務, 流水線(Pipeline)
-
簡單穩定
代碼少, 早期版本2萬行. 3.0版本以后加入集群功能, 5萬行. 單線程模型
-
客戶端語言多
-
持久化
(RDB和AOF方式)存放到硬盤中
-
主從復制
-
高可用和分布式
二. Redis使用場景
-
緩存/session
-
排行榜系統
-
計數器應用
視頻的播放/瀏覽次數. 並發量太大, 對傳統數據庫挑戰較大
-
社交網絡
贊/踩, 粉絲, 共同好友/喜好等等雜的數據
-
消息隊列系統
主要用於業務解耦
三. Redis安裝
使用docker安裝redis
四. Redis Shell
-
redis-server 啟動Redis
默認端口6379, 使用
--port xxx
指定端口號
指定配置文件 -
redis-cli 命令行接口
五. Redis使用
1. 全局命令
keys * 查看所有key
dbsize key的數量
exists +key 判斷存在幾個
del +key 刪除幾條
expire +key +seconds 設置過期時間
type +key 查看一個可以對應的value類型
set +key +value +ex 添加時可同時設置他的過期時間 ex填過期時間
get +key 獲取一個key的值
2. 數據結構和內部編碼
2.1 數據結構
- string 字符串
key 都是字符串類型, 而且其他幾種數據結構都是在字符串類型基礎上構建的.
字符串類型的值實際上可以是簡單或復雜的字符串(JSON/XML), 數字, 甚至是二進制(圖片, 音頻, 視頻, 最大512M)
mset, 批量設置值, 可以提高開發效率
mget, 批量獲取值
計數,
incr key, ++ 設置自增 (只有value是數字時) 例; incer like:news:1001 有人喜歡就加一
decr key, -- 設置自減
incrby key xx, 設置每次加幾個
decrby key xx 設置每次減幾個
開發中合理的key名, 業務名:對象名:id:屬性
- hash 哈希
hset key field value 存入鍵值對(一個key 可存入多個key value分多次存)
hget key field 取出鍵值對
hdel key field 刪除摸個鍵值對屬性
hlen key 查看可以有多少屬性
hmget key field 批量獲取key的多個屬性
hmset key field value 批量設置key的多個屬性的鍵值對
hexists key field 判斷key的屬性是否存在
hkeys key 列出這個key 所有屬性的名
hvals key 取出這個key 對應所有的屬性的值
hgetall key 列出這個key的所有屬性和值
-
list 列表
存儲多個有序的字符串
rpush key value ... 右邊插入元素
lpush key value ... 左邊插入元素
lrange key start end 取出數據 +開始(0)和結束(?)
lpop key 左側pop 從數組中把左側pop彈出
lrem key count value 刪除 +key +count數量的 +value
-
set 集合
不允許有重復元素.
同時處理多個集合的交集/並集/差集
sadd key element ... 添加數據
exists key 是否出現
srem key element ... 刪除元素
scard key 元素個數
sismember key element 判斷是否在集合中
smembers key 列出所有元素
- zset 有序集合
zadd key score member [score member...] 添加(可兩個一起添加
zcard key 查看元素數量
zscore key member 查看分數
zrem key member 移除
zincrby key score member 指定key 元素 增長
zrange scores +count +count +witnscores 按key 排序后的數量 +witnscores后面會跟分數