查詢官方鏡像及其版本信息mysql
$ docker search redis
加載最新鏡像redis
$ docker pull redis:lastest
查看本地鏡像sql
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/redis latest f0453552d7f2 7 days ago 98.2 MB docker.io/mysql latest 9b51d9275906 2 weeks ago 547 MB docker.io/tomcat latest 4e7840b49fad 3 weeks ago 529 MB
啓用daemondocker
$ docker run --name kris-redis -p 6380:6379 -d redis --requirepass "123456"
自定義redis.conf啓動shell
docker run -p 6379:6379 --name kris-redis -v /root/docker/redis/redis.conf:/etc/redis/redis.conf -v /root/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
# -p 6379:6379:把容器內的6379端口映射到宿主機6379端口 # -v /root/redis/redis.conf:/etc/redis/redis.conf:把宿主機配置好的redis.conf放到容器內的這個位置中 # -v /root/redis/data:/data:把redis持久化的數據在宿主機內顯示,作數據備份 # redis-server /etc/redis/redis.conf:這個是關鍵配置,讓redis不是無配置啓動,而是按照這個redis.conf的配置啓動 # -appendonly yes:redis啓動後數據持久化
查看運行狀態數據庫
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3c90175b38e6 redis "docker-entrypoint..." 13 minutes ago Up 13 minutes 0.0.0.0:6380->6379/tcp kris-redis 2bbd52391bab mysql "docker-entrypoint..." 7 days ago Up 7 days 0.0.0.0:3306->3306/tcp, 33060/tcp kris-mysql
啓用redis-cli,即redis客戶端json
$ docker exec -it kris-redis redis-cli
Redis的關鍵字對大小寫不敏感,但不能夠混合使用大小寫。後端
Redis存儲的形式是鍵值對。緩存
Redis的五大數據類型:字符串、列表、集合、哈希、有序集合tomcat
經常使用:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DsgZGbgA-1584805568548)(C:\Users\Louis\AppData\Roaming\Typora\typora-user-images\1584793538897.png)]
案例:
keys *
:返回全部"頂層key",即各大數據類型所存儲數據的名稱(注:Hash也是一個鍵值對,但Value也是一個鍵值對,<KEY, <K, V>>),舉個栗子:
127.0.0.1:6379>$ keys * 1) "customer" # 定義的Hash 2) "set01" # 定義的Set 3) "list01" # 定義的List 4) "username" # 定義的String
exists
:判斷某個key是否存在
127.0.0.1:6379>$ exists username (integer) 1 # 存在返回1 127.0.0.1:6379>$ exists username00 (integer) 0 # 不存在返回0
move key dbindex
:當前庫(索引爲:0)就沒有了,被移除了,數據被遷移到其餘數據庫
注:redis.conf中默認有16個庫,默認爲0,初始庫0是這樣的
127.0.0.1:6379>
,當選擇其餘庫庫時,是這樣的127.0.0.1:6379[dbindex]>
dbindex表示庫的索引。
127.0.0.1:6379>$ move username 2 # 數據遷移至其餘庫 (integer) 1 # 遷移成功 127.0.0.1:6379>$ select 2 # 選擇當前操做的數據庫 OK 127.0.0.1:6379[2]>$ get username # 查詢遷移後的數據,若查詢1庫中數據,須要從新選擇庫 "kris"
expire key 秒鐘
:爲給定的key設置過時時間
ttl key
:查看還有多少秒過時,-1表示永不過時,-2表示已過時
127.0.0.1:6379[2]>$ expire username 10 # 存活10秒 127.0.0.1:6379[2]>$ ttl username (integer) 7 127.0.0.1:6379[2]>$ ttl username (integer) 2 127.0.0.1:6379[2]>$ ttl username (integer) -2 # 已過時 127.0.0.1:6379[2]>$ get username (nil) # 已經不存在了
type key
:查看你的key是什麼類型
127.0.0.1:6379>$ type list01 list
概要:
使用場景:
經常使用命令:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Nl7bueV8-1584805568549)(C:\Users\Louis\AppData\Roaming\Typora\typora-user-images\1584796308413.png)]
案例:
set/get/del/append/strlen
定義時,若是已經存在,則會覆蓋保存
127.0.0.1:6379>$ set username kris OK 127.0.0.1:6379>$ get username "kris" 127.0.0.1:6379>$ append username louis (integer) 9 127.0.0.1:6379>$ get username "krislouis" 127.0.0.1:6379>$ strlen username (integer) 9
概要:
使用場景:
消息隊列: redis的lpush+brpop命令組合便可實現阻塞隊列,生產者客戶端是用lupsh從列表左側插入元素,多個消費者客戶端使用brpop命令阻塞時的「搶」列表尾部的元素,多個客戶端保證了消費的負載均衡和高可用性。
lpush+lpop=Stack(棧) lpush+rpop=Queue(隊列) lpush+ltrim=Capped Collection(有限集合) lpush+brpop=Message Queue(消息隊列)
經常使用: 待更新
案例: 待更新
概要:
在redis中哈希類型是指鍵自己又是一種鍵值對結構,如 :
value={{field1,value1},......{fieldN,valueN}}
使用場景:
經常使用: 待更新
案例: 待更新
概要:
使用場景:
標籤(tag):集合類型比較典型的使用場景,如一個用戶對娛樂、體育比較感興趣,另外一個可能對新聞感興趣,這些興趣就是標籤,有了這些數據就能夠獲得同一標籤的人,以及用戶的共同愛好的標籤,這些數據對於用戶體驗以及曾強用戶粘度比較重要。(用戶和標籤的關係維護應該放在一個事物內執行,防止部分命令失敗形成數據不一致)
sadd=tagging(標籤)
spop/srandmember=random item(生成隨機數,好比抽獎)
sadd+sinter=social Graph(社交需求)
經常使用: 待更新
案例: 待更新
概要:
使用場景:
排行榜:有序集合經典使用場景。
例如視頻網站須要對用戶上傳的視頻作排行榜,榜單維護多是多方面:按照時間、按照播放量、按照得到的贊數等。
經常使用: 待更新
案例: 待更新