redis學習筆記


【redis簡介】redis

    redis是一個開源的,先進的key-value存儲。它一般被稱爲數據結構服務器,由於redis的key能夠包含stringhashlistsetzset。這些數據都支持push/pop、add/remove以及取交集並集等豐富的操做。redis支持各類不一樣方式的排序。爲了保證效率,數據都是寫入內存中,它能夠週期性的把更新的數據寫入到磁盤或者把修改的操做寫入到追加的記錄文件中。緩存

【redis適用場合bash

  • 取最新N個數據的操做服務器

  • 排行榜應用,去topN操做數據結構

  • 須要設置精確的過時時間的應用app

  • 計數器的應用ide

  • uniq操做,去重spa

  • 實時系統,反垃圾系統orm

  • pub(發佈)/sub(訂閱)構建實時消息系統對象

  • 構建隊列系統

  • 緩存

【redis的string數據類型

1.set:設置值,成功返回OK

127.0.0.1:6379> set name hucc
OK
127.0.0.1:6379>

2.get:獲取key對應的值,若是key存在,返回對應的value,若是不存在,返回nil

127.0.0.1:6379> get name
"hucc"
127.0.0.1:6379> get name1
(nil)
127.0.0.1:6379>

3.setnx(set not exits):只有在key不存在時才作插入操做。

  • 若是key存在,不插入,返回0。

  • 若是key不存在,插入,返回1。

127.0.0.1:6379> setnx name hcc
(integer) 0
127.0.0.1:6379> setnx name1 hcc
(integer) 1
127.0.0.1:6379>

4.setex:爲key設置值,同時指定key的生存時間。格式:set key time value

127.0.0.1:6379> setex name 10 hucc
OK
127.0.0.1:6379>

上述例子:name這個key只存在10秒鐘,10秒後自動銷燬。

5.setrange:設置指定key的value值的子字符串。格式:setrange key num value

127.0.0.1:6379> set email hucc@163.com
OK
127.0.0.1:6379> get email
"hucc@163.com"
127.0.0.1:6379> setrange email 5 126.com
(integer) 12
127.0.0.1:6379> get email
"hucc@126.com"
127.0.0.1:6379>

從上述例子能夠看出,setrange的功能是將163.com替換成了126.com。即email的第5位開始,執行成功後會返回字符串的長度。可是:看下面的例子

127.0.0.1:6379> get email
"hucc@126.com"
127.0.0.1:6379> setrange email 5 qq.com
(integer) 12
127.0.0.1:6379> get email
"hucc@qq.comm"
127.0.0.1:6379>

爲何將126.com替換成qq.com的時候多了一個m,由於setrange只會替換掉你指定的字符串的長度的字符串,說白了就是qq.com會替換掉126.co這6個字母,剩下的m會保留。

6.mset:一次性設置多個key和value,若是返回1,則都成功,若是返回0,則都失敗。

127.0.0.1:6379> mset name1 hucc1 name2 hucc2
OK
127.0.0.1:6379> get name1
"hucc1"
127.0.0.1:6379> get name2
"hucc2"
127.0.0.1:6379>

7.msetnx:同理,不解釋

8.getset:獲取舊值而且設置新值

127.0.0.1:6379> set val 20
OK
127.0.0.1:6379> getset val 30
"20"
127.0.0.1:6379> get val
"30"
127.0.0.1:6379>

9.getrange:獲取子字符串。格式:getrange email begin end

127.0.0.1:6379> get email
"hucc@yahoo.com"
127.0.0.1:6379> getrange email 1 5
"ucc@y"
127.0.0.1:6379>

10.mget:批量獲取

127.0.0.1:6379> mget name name1 name2 name3
1) (nil)
2) "hucc1"
3) "hucc2"
4) "hucc3"
127.0.0.1:6379>

11.incr:自增,++。若是key不存在,則默認key的value值爲0

127.0.0.1:6379> get val
"30"
127.0.0.1:6379> incr val
(integer) 31
127.0.0.1:6379> 
127.0.0.1:6379> incr a
(integer) 1
127.0.0.1:6379>

12.incrby:自增多少次,接參數,若是參數爲5,則自增5次,若是爲-5,則自減5次。

127.0.0.1:6379> get val
"20"
127.0.0.1:6379> incrby val 5
(integer) 25
127.0.0.1:6379> incrby val -5
(integer) 20
127.0.0.1:6379>

13.decr、decrby,自減操做,和incr、incrby對立。

14.append:給指定的key後面添加值,返回新字符串的長度

127.0.0.1:6379> set name hucc
OK
127.0.0.1:6379> append name " is a handsome boy"
(integer) 22
127.0.0.1:6379> get name
"hucc is a handsome boy"
127.0.0.1:6379>

15:strlen:獲取指定key的值的長度。

127.0.0.1:6379> set name "hucc is a handsome boy"
OK
127.0.0.1:6379> strlen name
(integer) 22
127.0.0.1:6379>

【redis的hash數據類型

hash是string類型的field和value的映射表,它的添加和刪除都是o(1)。hash特別適用於存儲對象,相比string把每一個字段都存儲成單個string類型,將一個對象都存儲在hash中將更省內存,而且更加的方便存取整個對象。說白了就是string存儲單個屬性,hash適合存儲整個對象。

1.hset:hash的設置方法。hset table field value(至關於與設置了對象一個屬性,還能往裏面添加)。

127.0.0.1:6379> hset person name hucc
(integer) 1
127.0.0.1:6379> hset person age 22
(integer) 1
127.0.0.1:6379> hset person saraly 9000
(integer) 1

2.hsetnx,相似setnx。

3.hmset,相似mset

127.0.0.1:6379> hmset user:001 name hucc age 21 saraly 9000
OK
127.0.0.1:6379>

4.hincrby

5.hexits:查看某一個字段是否存在

6.hlen:查看某個對象裏面的字段的數量

7.hdel:刪除某個字段

8.hkeys:返回對象中全部的字段名。

9.hvals:返回對象中全部的value值。

10.hgetall:獲取某個hash中所有的key和value,這個最好用

127.0.0.1:6379> hgetall user:001
1) "name"
2) "hucc"
3) "age"
4) "21"
5) "saraly"
6) "9000"
127.0.0.1:6379>

【未完待續...

相關文章
相關標籤/搜索