一 redis的安裝啟動(dòng)
下載redis:https://github.com/MSOpenTech/redis/releases传趾。
啟動(dòng)services,在redis安裝目錄下運(yùn)行
redis-server.exe redis.windows.conf
- 啟動(dòng)client
redis-cli.exe -h 127.0.0.1 -p 6379
二 redis的數(shù)據(jù)類型
Redis支持五種數(shù)據(jù)類型:string(字符串)敌呈,hash(哈希)嚼鹉,list(列表),set(集合)及zset(sorted set:有序集合)驱富。
- String(字符串):string是redis最基本的類型锚赤,一個(gè)key對(duì)應(yīng)一個(gè)value。
127.0.0.1:6379> SET name "kevin"
OK
127.0.0.1:6379> GET name
"kevin"
- Hash(哈希):edis hash 是一個(gè)鍵值對(duì)集合褐鸥。Redis hash是一個(gè)string類型的field和value的映射表线脚,hash特別適合用于存儲(chǔ)對(duì)象
127.0.0.1:6379> HMSET user:1 username rose age 20 addr guangdong
OK
127.0.0.1:6379> HGETALL user:1
1) "username"
2) "rose"
3) "age"
4) "20"
5) "addr"
6) "guangdong"
- List(列表):Redis 列表是簡單的字符串列表,按照插入順序排序叫榕。你可以添加一個(gè)元素到列表的頭部(左邊)或者尾部(右邊)浑侥。
127.0.0.1:6379> lpush lists apple orange
(integer) 2
127.0.0.1:6379> lrange lists 0 10
1) "orange"
2) "apple"
127.0.0.1:6379> lpush lists banana
(integer) 3
127.0.0.1:6379> lrange lists 0 3
(integer) 3
1) "banana"
2) "orange"
3) "apple"
127.0.0.1:6379>
- Set(集合):Redis的Set是string類型的無序集合。
127.0.0.1:6379> sadd arrays one tow
(integer) 2
127.0.0.1:6379> sadd arrays one
(integer) 0
127.0.0.1:6379> sadd arrays three
(integer) 1
127.0.0.1:6379> sadd arrays one four
(integer) 1
127.0.0.1:6379> smembers arrary
1) "four"
2) "tow"
3) "one"
4) "three"
- zset(sorted set:有序集合):Redis zset 和 set 一樣也是string類型元素的集合,且不允許重復(fù)的成員晰绎。不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)寓落。redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)荞下。
127.0.0.1:6379> zadd arrs 0 iOS
(integer) 1
127.0.0.1:6379> zadd arrs 0 android
(integer) 1
127.0.0.1:6379> zrange arrs 0 2
1) "android"
2) "iOS"
127.0.0.1:6379> zadd arrs 0 android
(integer) 0
127.0.0.1:6379> zrange arrs 0 2
1) "android"
2) "iOS"
三 Redis 鍵(key)
- set key value #新增一個(gè)key
- del key #在 key 存在時(shí)刪除 key伶选。成功返回1
- dump key #序列化給定 key ,并返回被序列化的值尖昏。
127.0.0.1:6379> dump mykey
"\x00\x03abc\a\x00&\x9e\xe5\xceI\xb8w\xf8"
- exists key #檢查給定 key 是否存在
- expire key seconds #為給定 key 設(shè)置過期時(shí)間仰税。
- persist key #移除 key 的過期時(shí)間,key 將持久保持抽诉。
- type key #返回 key 所儲(chǔ)存的值的類型陨簇。
四 Redis 發(fā)布訂閱
Redis 發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息迹淌。
Redis 客戶端可以訂閱任意數(shù)量的頻道河绽。
127.0.0.1:6379> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
我們先重新開啟個(gè) redis 客戶端,然后在同一個(gè)頻道 redisChat 發(fā)布消息唉窃,訂閱者就能接收到消息
127.0.0.1:6379> PUBLISH redisChat "this is a test message"
(integer) 1
# 訂閱者的客戶端會(huì)顯示如下消息
1) "message"
2) "redisChat"
3) "this is a test message"
五 Redis 事務(wù)
- Redis 事務(wù)可以一次執(zhí)行多個(gè)命令耙饰, 并且?guī)в幸韵聝蓚€(gè)重要的保證:
- 事務(wù)是一個(gè)單獨(dú)的隔離操作:事務(wù)中的所有命令都會(huì)序列化、按順序地執(zhí)行句携。
- 事務(wù)在執(zhí)行的過程中榔幸,不會(huì)被其他客戶端發(fā)送來的命令請(qǐng)求所打斷。
事務(wù)是一個(gè)原子操作:事務(wù)中的命令要么全部被執(zhí)行矮嫉,要么全部都不執(zhí)行削咆。
- 一個(gè)事務(wù)從開始到執(zhí)行會(huì)經(jīng)歷以下三個(gè)階段:
- 開始事務(wù)。
- 命令入隊(duì)蠢笋。
- 執(zhí)行事務(wù)拨齐。
- redis事務(wù)命令
DISCARD #取消事務(wù),放棄執(zhí)行事務(wù)塊內(nèi)的所有命令昨寞。
EXEC #執(zhí)行所有事務(wù)塊內(nèi)的命令瞻惋。
MULTI #標(biāo)記一個(gè)事務(wù)塊的開始厦滤。
- 舉個(gè)栗子
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET bookname "redis"
QUEUED
127.0.0.1:6379> GET bookname
QUEUED
127.0.0.1:6379> SADD langue "iOS" "android" "java"
QUEUED
127.0.0.1:6379> SMEMBERS langue
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) "redis"
3) (integer) 3
4) 1) "android"
2) "java"
3) "iOS"