echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這纔是真正的堪稱強大!!!php
最基本也是最經常使用的數據類型就是String,對應的操做命令也比較簡單的,有get/set/del等;它的對應的值能夠是任何種類的字符串,最大保存長度512MB。基本命令的使用以下:java
set name echo get name del name set key 1 incr key decr key incrby key 20 decrby key 20 incrbyfloat key 2.1 set name ab append name c getrange name 1 5 strlen name mget name1 name2 name3 mset name4 echo4 name5 echo5 name6 echo6
setnx name echo 若是name存在就返回0存入不成功,若是name不存在就返回1存入成功。
基於該特性咱們能夠用它來實現分佈式鎖。可是注意:使用改特性也有一個缺點就是,可能會形成死鎖。若是咱們在使用過程中,使用del key釋放鎖,有可能會釋放鎖失敗,致使其餘操做永遠獲取不到鎖。當讓咱們也能夠對ke設置過時時間,可是也會有相同的問題。解決方案:python
對於該數據類型,我以爲用list一點也不貼切,應該叫作:有序的隊列,才合適。畢竟list是無序的,並且也沒有前後一說。基本操做命令以下:redis
lpush queue a lpush queue b c rpush queue d e lpop queue rpop queue lindex queue 0 lrange queue 0 -1 ltrim queue 0 3 del queue llen queue brpop queue 50
brpop queue 60 若是queue隊列中存在元素,直接彈出最右邊的按個元素,若是不存在,輪詢等待60s。超時,直接返回null。
該數據結構有一個明顯的特色,那就是有序,不論是從左邊存入仍是右邊存入,都可以有效的實現隊列的進出。咱們能夠看到最後一個條命令,它實際上是redis提供的一個高級操做,利用list隊列的特性,實現了阻塞式訪問,咱們可使用該功能作一個簡單的發佈訂閱功能。若是存入數據做爲發佈消息,使用brpop阻塞式訪問來訂閱。ruby
Redis中Set 是 String 類型的無序集合。該集合有set集合的屬性,元素惟一, 因此對應的redis set數據成員是惟一的,這就意味着集合中不能出現重複的數據。微信
sadd myset a b c d e f g smembers myset scard myset srandmember key spop myset srem myset d e f sismember myset a sdiff set1 set2 sinter set1 set2 sunion set1 set2
在set中,元素都不是重複的,因此咱們能夠用它來記錄一些惟一的值。這幾個基本的命令裏面咱們能夠看到有一個spop myset 隨機彈出一個元素,利用set的惟一性,和隨機彈出元素的特性,咱們可使用set集合實現一個抽獎活動。將全部人的id存入set集合中,而後使用spop隨機彈出元素,彈出的元素id就是中獎人。數據結構
zset和Set類型極爲類似,它們都是字符串的集合,都不容許重複的成員出如今一個Set中。它和set集合的區別只去在於zset是有序的,set是無序的。並且set的存儲和zset的存儲不同app
zadd myzset 10 java 20 php 30 ruby 40 cpp 50 python zrange myzset 0 -1 withscores zrevrange myzset 0 -1 withscores zrangebyscore myzset 20 30 zrem myzset php cpp zcard myzset zincrby myzset 5 python zcount myzset 20 60 zrank myzset java zscore myzset java
zset是一個有序的集合,它的排序是根據score來進行的,因此咱們可使用該特性來實現一個最熱文章的功能,當文章的熱度上漲以後,咱們對文章對應score來進行遞增便可。分佈式
Redis的哈希數據類型存儲的是一個string類型的field和value的映射表,hash適合存放對象學習
hset h1 f 6 hmset h1 a 1 b 2 c 3 d 4 hget h1 a hmget h1 a b c d hkeys h1 hvals h1 hgetall h1 hexists h1 f hdel h1 f hlen h1
hash的操做和咱們java開發中操做map很相似,好比添加一個key爲h一、field爲f、value爲6的hash值,在java中就至關於建立一個名字爲h1的map,存入key爲f,value爲6的鍵值對。該數據結構的特色很適合咱們在業務中存放對象,好比使用他來實現購物車。將hash設計成爲後面這種模式便可:key:用戶 id;field:商品 id;value:商品數量。商品在購物車中的數據量使用以下命令來實現便可
對咱們的hash值來進行加1 hincrby h1 d 1 對咱們的hash值來進行減1 hincrby h1 d -1
作一個有底線的博客主