拉取 redis 鏡像(alpine 是經典版)redis
docker pull redis:4-alpine
把本機的6379映射到虛擬的6379docker
docker run -it -p 6379:6379 --name redis(名字) redis:4-alpine(下載的鏡像名)
進入redisshell
docker exec -it redis /bin/sh
與redis進行交互數據庫
redis-cli
速度快數組
基於內存, C語言實現, 單線程架構, 集性能和優雅於一身的代碼緩存
REmote DIctionary Server. 值能夠是字符串/哈希/列表/集合/有序集合, Bitmap等等
豐富的功能服務器
鍵過時功能. 發佈-訂閱功能(實現消息系統), Lua腳本, 簡單的事務, 流水線(Pipeline)網絡
簡單穩定session
代碼少, 早期版本2萬行. 3.0版本之後加入集羣功能, 5萬行. 單線程模型數據結構
持久化
(RDB和AOF方式)存放到硬盤中
高可用和分佈式
計數器應用
視頻的播放/瀏覽次數. 併發量太大, 對傳統數據庫挑戰較大
社交網絡
贊/踩, 粉絲, 共同好友/喜愛等等雜的數據
消息隊列系統
主要用於業務解耦
使用docker安裝redis
redis-server 啓動Redis
默認端口6379, 使用--port xxx
指定端口號
指定配置文件
redis-cli 命令行接口
keys * 查看全部key dbsize key的數量 exists +key 判斷存在幾個 del +key 刪除幾條 expire +key +seconds 設置過時時間 type +key 查看一個能夠對應的value類型 set +key +value +ex 添加時可同時設置他的過時時間 ex填過時時間 get +key 獲取一個key的值
key 都是字符串類型, 並且其餘幾種數據結構都是在字符串類型基礎上構建的. 字符串類型的值實際上能夠是簡單或複雜的字符串(JSON/XML), 數字, 甚至是二進制(圖片, 音頻, 視頻, 最大512M) mset, 批量設置值, 能夠提升開發效率 mget, 批量獲取值 計數, incr key, ++ 設置自增 (只有value是數字時) 例; incer like:news:1001 有人喜歡就加一 decr key, -- 設置自減 incrby key xx, 設置每次加幾個 decrby key xx 設置每次減幾個
開發中合理的key名, 業務名:對象名:id:屬性
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 列出全部元素
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後面會跟分數