redis 學習整理筆記

[由於水平有限,歡迎指正。]

[Redis 作者]

     叫Salvatore Sanfilippo,來自意大利的西西里島,現在居住在卡塔尼亞。目前供職於Pivotal公司。他使用的網名是antirez。


[Redis 特點]

 Redis從它的許多競爭繼承來的三個主要特點:

   1) : Redis數據庫完全在內存中,使用磁盤僅用於持久性。

   2) : 相比許多鍵值數據存儲,Redis擁有一套較爲豐富的數據類型。

   3) : Redis可以將數據複製到任意數量的從服務器。


[Redis 優勢]

    1) : 異常快速:Redis的速度非常快,每秒能執行約11萬集合,每秒約81000+條記錄。

    2) : 支持豐富的數據類型:Redis支持最大多數開發人員已經知道像列表,集合,有序集合,散列數據類型。這使得它非常容易解決各種各樣的問題,我們 

            知道哪些問題是可以處理通過它的數據類型更好。

    3) : 操作都是原子性:所有Redis操作是原子的,這保證瞭如果兩個客戶端同時訪問的Redis服務器將獲得更新後的值。

    4) : 多功能實用工具:Redis是一個多實用的工具,可以在多個用例如緩存,消息,隊列使用(Redis原生支持發佈/訂閱),任何短暫的數據,應用程序,

            如Web應用程序會話,網頁命中計數等。


[數據類型]   redis支持五種類型的數據類型: string hash list set zset

  分別介紹redis的五種數據類型:

    1) : string(字符串)

           string是最簡單的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value,其上支持的操作與Memcached的操作類似。但它的功能

               更豐富。

    2) : list是一個鏈表結構

           主要功能是push、pop、獲取一個範圍的所有值等等。操作中key理解爲鏈表的名字。

           主要用在: 微博TimeLime, 消息隊列, 關注列表, 粉絲列表等

    3) : 哈希

           Redis的哈希是鍵值對的集合。 Redis的哈希值是字符串字段和字符值之間的映射,因此它們被用來表示對象

           用在: 用戶瀏覽數

    4) : set 集合

           Redis的集合是字符串的無序集合。在Redis您可以添加,刪除和測試文件是否存在,在成員O(1)的時間複雜度。

           主要用在: 共同好友


    5: zset 有序集合

           Redis的有序集合類似於Redis的集合,字符串不重複的集合。不同的是,一個有序集合的每個成 員用分數,以便採取有序set命令,從最小的到最大

               的成員分數有關。雖然成員具有唯一性,但分數可能會重複。

           主要用在: 排行榜(順序性)


[部分整理]

六 命令總結

    0) : redis安裝/服務器啓動/客戶端啓動 的命令

        - redis 安裝:   brew install redis

        - redis服務器的啓動  :  redis-server

        - redis客戶端的啓動 :  redis-cli

    1) : 鏈接操作相關命令

        - qiut => 關閉連接

        - auth redis設置的密碼   =>  簡單密碼認證

    2) : 對value操作的命令

        - exists 鍵名  => 判斷鍵名是否存在

        - del 鍵名  =>  刪除一個指定鍵名的數據

        - type 鍵名  =>  返回值得類型

        - keys *  => 返回所有的key

        - dbsize  =>  返回當前數據庫中所有key的數目

        - expire key 存活時間  =>  設置key的存活時間

        - ttl key  => 獲取key的存活時間

        - select [0-15]  => 選擇數據庫 默認0數據庫

        - info  => 獲取服務器的信息和統計

    3) : 設置redis安全密碼

        - 去配置文件中 vim /usr/local/etc/redis.conf 中添加 requirepass redis密碼

    4): 對String操作的命令

        - set (key value) => 給數據庫中名稱爲key的string賦予值value

        - get( key) => 返回數據庫中名稱爲key的string的value

        - mget(key1, key2,…, key N) => 返回庫中多個string(它們的名稱爲key1,key2…)的value

        - setnx(key, value) => 如果不存在名稱爲key的string,則向庫中添加string,名稱爲key,值爲value

        - setex(key, time, value) => 向庫中添加string(名稱爲key,值爲value)同時,設定過期時間time

        - mset(key1, value1, key2, value2,…key N, value N) => 同時給多個string賦值,名稱爲key i的string賦值value i

        - msetnx(key1, value1, key2, value2,…key N, value N) => 如果所有名稱爲key i的string都不存在,則向庫中添加string,名稱key i賦值爲value i

        - incr(key) => 名稱爲key的string增1操作

        - incrby(key, integer) => 名稱爲key的string增加integer

        - decr(key) =>名稱爲key的string減1操作                 

        - decrby(key, integer) => 名稱爲key的string減少integer

        - append(key, value) => 名稱爲key的string的值附加value

        - substr(key, start, end) => 返回名稱爲key的string的value的子串

    5) : 對List操作的命令

        - rpush( key value )=> 在名稱爲key的list尾部添加一個值爲value

        - lpush (key value) => 在名稱爲key的list頭部添加一個值爲value    

        - llen( key)  => 返回名稱爲key的長度

        - lrange (key start end)  => 返回名稱爲key的list中start至end之間的元素(end 爲-1 表示返回key對應的所有數據)

        - ltrim(key, start, end) => 截取名稱爲key的list,保留start至end之間的元素             

        - lindex(key, index) => 返回名稱爲key的list中index位置的元素

        - lset(key, index, value) => 給名稱爲key的list中index位置的元素賦值爲value

        - lrem(key, count, value)=>刪除count個名稱爲key的list中值爲value的元素。count爲0,刪除所有值爲value的元素,count>0從 頭至尾刪除count個值爲

              value的元素,count<0從尾到頭刪除|count|個值爲value的元素。

        - lpop(key):返回並刪除名稱爲key的list中的首元素

        - rpop(key) => 返回並刪除名稱爲key的list中的尾元素                      

        - blpop(key1, key2,… key N, timeout):lpop命令的block版本。即當timeout爲0 時,若遇到名稱爲key i的list不存在或該list爲空,則命令結束。如果

               timeout>0,則 遇到上述情況時,等待timeout秒,如果問題沒有解決,則對keyi+1開始的list執行pop操作        

       - brpop(key1, key2,… key N, timeout):rpop的block版本。參考上一命令。          

       - rpoplpush(srckey, dstkey):返回並刪除名稱爲srckey的list的尾元素,並將該元素添加到名稱爲dstkey的list的頭部

    6) : 對Set操作的命令

       - sadd (key member ) => 向名稱爲key的set中添加元素member

       - smembers (key)   =>  返回名稱爲key的集合

       - srem (key member ) => 刪除名稱爲key的set中的元素member

       - scard( key)  =>  返回名稱爲key的set的集合個數

       - sinter( key1 key2)  => 求名稱爲key1和名稱key2的交集

       - sinterstore( dstkey key1 key2)  => 求交集並將交集保存到集合dstkey中

       - sismember(key, member)  => 測試member是否是名稱爲key的set的元素

       - sunion(key1, key2,…key N)  => 求並集

       - sunionstore(dstkey, key1, key2,…key N) => 求並集並將並集保存到dstkey的集合                  

       - sdiff(key1, key2,…key N) :求差集

       - sdiffstore(dstkey, key1, key2,…key N) => 求差集並將差集保存到dstkey的集合

    7) : 對zSet操作的命令

       - zadd (key score member) => 向名稱爲key的zset中添加元素member,score用於排序。如果該元素已經存在,則根據score更新該元素的順序

       - zrange (key start end)  => 返回名稱爲key的zset(元素已按score從小到大排序)中的                index從start到end的所有元素

       - zrevrange( key, start, end) => 返回名稱爲key的zset(元素已按score從大到小排序)中的            index從start到end的所有元素

       - (zrem key, member)  => 刪除名稱爲key的zset中的元素member

       - zincrby (key, increment, member) => 如果在名稱爲key的zset中已經存在元素member,則該元素的score增加increment;否則向集合中添加該元素,

                其score的值爲increment

       - zrank( key, member )=> 返回名稱爲key的zset(元素已按score從小到大排序)中member元素的rank(即index,從0開始),若沒有member元素,

                返回“nil”    

       - zrevrank (key, member 0 => 返回名稱爲key的zset(元素已按score從大到小排序)中member元素的rank(即index,從0開始),若沒有member元

              素,返回“nil”

    8) : 對Hash操作的命令

       - hmset( key, field,value) => 向名稱爲key的hash中添加元素field<—>value [user:1鍵名]

             例如: hmset user:1 username daxia gender 1 age 23

       - hget (key, field) => 返回名稱爲key的hash中field對應的value

            例如: hget user:1 username

       - hmget( key, field1, …,field N) => 返回名稱爲key的hash中field i對應的value

            例如: hmget user:1 username gender

       - hgetall (key )=> 返回名稱爲key的hash中所有的鍵(field)及其對應的value

       - hvals( key ) => 返回名稱爲key的hash中所有鍵對應的value

       - hkeys (key ) => 返回名稱爲key的hash中所有鍵

       - hlen  (key)  => 返回名稱爲key的hash中元素個數

       - hmset( key, field1, value1,…,field N, value N) => 向名稱爲key的hash中添加元素field i<—>value i

       - hincrby (key, field, integer) => 將名稱爲key的hash中field的value增加integer

       - hexists (key, field )=> 名稱爲key的hash中是否存在鍵爲field的域

       - hdel (key, field )=> 刪除名稱爲key的hash中鍵爲field的域

   9) : 持久化

       - save:將數據同步保存到磁盤

       - bgsave:將數據異步保存到磁盤

       - lastsave:返回上次成功將數據保存到磁盤的Unix時戳    

       - shundown:將數據同步保存到磁盤,然後關閉服務

   10)  : 遠程服務控制

       - info:提供服務器的信息和統計

       - monitor:實時轉儲收到的請求

       - slaveof:改變複製策略設置

       - config:在運行時配置Redis服務器

發佈了34 篇原創文章 · 獲贊 7 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章