Redis學習1--字符串學習

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 圖片數據


存儲中文注意事項



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章