Redis存儲數據格式有6中,首先來學習字符串String
1.字符串存儲
爲字符串鍵設置值
SET key value
將字符串鍵key的值設置爲value,命令返回ok設置成功
如果字符串鍵key已經存在,那麼將會覆蓋原來的舊值
SET key value nx/xx
set命令還支持可選的nx和xx選項
如果給定了nx選項,僅在key不存在的情況下才進行設置
如果給定xx選項,僅在key已經存在的情況下設置
第一個nx-str鍵不存在所以設置失敗
第二個msg鍵存在所以設置成功,並覆蓋舊值
第三個nx-str本身不存在,用nx所以設置成功
第四個nx-str已經存在所以用nx設置不成功
第五個nx-str已經存在所以用xx設置成功,並修改
使用Redis來進行緩存
緩存程序的API及其實現
cache(client) 設置混成程序使用的客戶端
Cache.put(name,content)把制定的內容放到混成中,並使用name來命名
Cache.get(name) 從緩存中以name名取出內容
在鍵不存在的情況下設置
SETNX key value
效果與set key value nx同
設置多個字符串鍵的值
MSET key value [key value...]
MGET key [key....]
一次設置多個不存在的鍵
MSETNX key value [key value...]
如果都不存在的話可以一次設置成功
第一次使用mset 設置成功返回了1
第二次設置因爲ex-key已經存在,導致所有的key設置都沒有成功
設置新值並返回舊值GETSET key new-value
追加內容到字符串 APPEND
將值追加到key對應value的後面
返回值的長度
SETLEN key
字符串的索引
字符串的索引,有正數索引(0)和負數索引(-1開始)
範圍設置
SETRANGE key index value 只適用正數索引
從索引index開始,用value去覆蓋給定key所存儲的字符串值,返回覆蓋後,字符串值得長度
示例中從索引1開始替換
範圍取值
GETRANGE key start end 可以適用正數和負數索引
返回key存儲值中的位於start到end的字符 包含start和end
設置和獲取數字
incrby key increment 增加key值
decrby key decrement
當key值不存在會設置爲0在操作
計數器API及其實現
Counter(name,client) 設置計數器的名字和客戶端
Counter.incr() 將計數器的值增1,然後返回計數器值
Counter.get() 返回計數器的值
Counter.reset(n=0) 將計數器的值重置,默認重置爲0
Id生成器示例
IdGenerator(name,client) 設置id生成器的名字和客戶端
idGenerator.get() 生產一個新的自增id
idGenerator.init(n) 保留n個id,防止搶注,
generator = idGenerator('user-id',redis_client)
generator.init(10000)
generator.gen()
generator.incr()
浮點數的自增和自減
INCRBYLOAT key increment
設置和獲取二進制數據
set、get、setnx、append等命令
SETBIT key index value設置二進制位的值
GETBIT key 獲取二進制
BITCOUNT key start end
二進制位運算
BITOP operation destkey key [key...]
對一個或多個保存二進制位的字符串鍵執行位元操作,並將經過保存到destkey上。
operation 可以是AND、OR、NOT、XOR這四種操作中任意一種:
AND 求邏輯並、OR求邏輯或、XOR求邏輯異或、NOT求邏輯非
使用Redis緩存熱門圖片
圖片網站通常要存儲大量的圖片,少量部分熱門的圖片。
爲了加快網站獲取熱門圖片的速度,我們可以利用Redis能夠存儲二進制數據的這一特性。
用之前構建的緩存程序來緩存圖片網站中的熱門圖片
cache = Cache(redis_client) 設置緩存的客戶端
file = open('redis-logo.jpg','r') 打開文件
data = file.read() 讀取文件數據
file.close()
cache.put('redis-log',data) 以redis-log爲名字,將圖片緩存起來
cache.get('redis-logo') 去除redis-logo 圖片數據
存儲中文注意事項