三、數據庫:redis數據庫

一、Redis數據庫

1、redis 是一個開源的使用 ANSI  C語言編寫、遵守 BSD 協議、支持網絡、可基於內存亦可持久化(週期性的把內存中的數據寫入到硬盤中,重啓的時候再次加載進行使用)的日誌型、Kye - Value數據庫

2、redis 也被稱爲數據結構服務器,因爲它的 value 可以是字符串、哈希、列表、集合、有序集合等類型

3、redis 支持數據的備份,即 master-slave 模式的數據備份

4、基本的數據結構:

    string:字符串          list:列表                                                  hash:散列     

    set:集合                   sorted  set(zset):有序集合

5、redis 連接

    本地連接: redis -cli 

    遠程連接linux: redis -cli  主機地址 -p  6379

 

二、 redis數據類型——string字符串

1、設置 key - value    (key 的命名規範:不允許出現空格和 \n ( 換行 ),其餘大部分字符都可以使用)

      設置鍵值:set   key   value  

      一次設置多個鍵值:mset   key1  value1  key2  value2   ......       (鍵值之間,使用空格隔開)

      獲取鍵值:get   key

      一次獲得多個 key 的值:mget  key1   key2   key3   (key 與 key 之間使用空格隔開)

   

2、incr、decr

  incr 做自增操作,可以對某個 key 的 value 進行 +1操作

  decr 做自減操作,可以對某個 key 的 value 進行 -1操作

   

3、incrby、decrby  :指定增加 / 減少的數值

   

4、keys  *  獲取 redis 中所有的key

   

5、mysql 數據在 redis 中的存儲格式

   Mysql數據表使用行和列的組合儲存數據,以【it_user】表爲例

id usename email
1 asion [email protected]
2 makr [email protected]

 ①如果需要把上面的 mysql 的數據存儲到 redis 裏面,存儲的 key 如何命名,一般需要分如下幾步來操作:

    a:將 mysql 的表名作爲 redis 的 key 的第一部分 (it_user)

    b:將 mysql 的表的主鍵名放在上面的前綴之後,作爲 key 的第二部分,使用冒號分隔(it_user:id)

    c:對應記錄的主鍵值作爲 key 的第三部分(it_user:id:1 )

    d:將 mysql 裏面的其他的字段作爲 key 的第四部分(it_user:id:1 :username)

 ②把上面 mysql 表裏面的記錄保存在 redis:

     ⑴ 存儲第一條數據:

    

     ⑵ 存儲第二條數據:

    

     ⑶ 最終在 redis 中的儲存如下:

     

   ③獲取剛剛儲存的信息

     

6、exists   key    判斷指定鍵是否存在,存在返回1,不存在返回 0

7、type   key     返回指定鍵的數值類型

  

8、del   key1  key2   key3     刪除指定鍵,可以刪除一個也可以刪除多個,鍵與鍵之間用空格隔開

9、rename   key   newkey    重命名

10、dbsize   返回當前數據庫中 key 的數量

11、expire   key   seconds   爲 key 指定過期時間,單位爲 s,當 key 過期後,會被自動刪除

         ttl   key    返回 key 的剩餘過期時間

    如圖:創建一個 color 鍵,指定它的過期時間爲10s,10s後自動刪除, - 2表示已過期 2s,此時 color 鍵已經被刪除

12、 select   index    切換數據庫,redis 共有16個數據庫,索引值爲 0 - 15,默認使用 db-0 數據庫,超出會報錯

13、move  key  index   將 key 從當前數據庫移動到指定數據庫

14、 flushdb   刪除當前數據庫中所有的 key

          flushall   刪除所有數據庫中所有的 key

15、append   key   value    給指定的 key 追加 value(原 value 會被保留

16、substr  key   start   end    對指定的 key 值進行截取,返回截取過的 value  (對 key - value 沒有影響)

 

 

三、 redis數據類型——list列表類型

1、list 類型其實就是一個雙向鏈表,通過 push,pop 操作,從鏈表的頭部或者尾部添加或刪除元素,這使得 list 既可以用作棧,也可以用作隊列

2、lpush 、rpush 、lrange 

      lpush   key   value    :向鏈表的頭部放入數據            rpush   key   value    :向鏈表的尾部放入數據

      lrange   key   start   stop  :獲取列表的信息, 0 -1 表示獲取該 list 的全部信息

3、lpop 、rpop

      lpop    key    :在鏈表的左側彈出第一個數據(彈出鏈表的頭部數據)

      rpop    key   :在鏈表的右側彈出最後一個數據(彈出鏈表的尾部數據)

4、llen   key    :返回 key 對應的 list 的長度,若 key 不存在則返回 0,若 key 對應的數據類型不是 list 返回錯誤

5、ltrim   key   start    stop      :截取 list ,保留指定區間內的元素,其餘元素刪除

 

 

四、redis數據類型——set集合類型

1、redis 裏面的 set 集合類型是 string 類型的無序集合,被稱爲無序集合類型

2、集合的三個特點:無序性、唯一性、確定性

3、sadd   key   member    :添加一個 string 元素到 key 對應的 set 集合中,若添加成功則返回 1,若該元素已存在,則添加失敗,返回 0

4、smembers   key   :獲取集合裏面的元素

5、srem   key   member   :移除集合中的某個元素,移除成功返回 1 

6、spop   key   :隨機移除集合中的某個元素,並返回刪除的元素

7、sismember  key   member: 判斷元素是否存在集合中,存在返回 1,不存在返回 0

8、scard   key :返回集合中元素個數

9、smove   key1   key2   member:將集合1中的指定元素移除給集合2,成功則返回 1

10、集合運算:

   sinter       key1   key 2    求交集

   sunion    key1    key2    求並集

   sdiff         key1    key2    求差集

11、實例應用: redis 裏面的集合一般用於社交類型的網站的好友關係展示,如:好友推薦,顯示共同好友等

   ①首先設置四個用戶:aaa、bbb、ccc、ddd 以及他們的郵箱信息

  

   ②設置好友集合: 設定 03 號與 01、02 號爲好友,04 號與 02 號爲好友

  

   ③求出好友關係:

   求 03 號與 04 號的共同好友(交集):

   

   求 03 號 與 04 號的全部好友(並集):

   

   通過 03  號向 04 號推薦好友(差集):

  

 

 

五、redis數據類型——zset集合類型(sorted   set)

1、與 set 一樣,zset 也是 string 類型元素的集合,不同的是,set 集合中的元素是無序的,而在 zset 集合中,每個元素都會關聯一個權,通過權值可以有序的獲取集合中的元素,所以 zset 被稱爲有序集合

2、可以利用 zset 的特點,根據回覆量,獲取熱門信息

3、zadd   key   權   member  :向集合中添加元素,並設置權重

4、zrange   key   start    stop  :返回指定區間的元素,按照權重,升序排列

5、zrevrange   key   start    stop  :返回指定區間的元素,按照權重,降序排列

6、zremrangebyrank   key     start   stop : 刪除指定區間的元素(按權值大小升序排列,然後刪除指定區間的元素)

7、zrank   key   member :返回指定元素在集合中的索引值,集合中元素按照權重,升序排列

   將上一步操作刪除的元素添加上,並重新賦予權值

8、zrevrank   key   member :返回指定元素在集合中的索引值,集合中的元素按照權重,降序排列

9、zcard   key  :返回集合中的元素個數

10、zscore   key   member  :  返回指定元素的權重值

11、zrange   key   start   stop   withscores  :返回指定區間的元素以及他們的權重值

12、zincrby   key   increment   member  :按照 increment 幅度,增加對應的 member 的權值,並返回增加後的新權值

13、zrem   key   member  :刪除指定元素,刪除成功返回 1,刪除失敗(元素不存在)返回 0

 

 

六、redis數據類型——hash類型

1、redis 裏面的 hash 是一個 string 類型的 field 和 value 的映射表,特別適合用於存儲對象

    儲存格式類似於: key = array ( " field " => " value " )

2、hset    key   field   value  :設置單個值

      hget    key   field  :獲取單個值

3、hmset   key   field1   value1    field2   value2   .......   :設置多個值,使用空格隔開

      hgetall    key   :獲取 key 中全部的 hash 數據

      hmget    key    field1   field2 ..... :獲取多個值

4、hkeys   key   :獲取 key 中全部的 field

5、hvals   key   :獲取 key 中全部的 value

6、hlen   key   :獲取 kes 中 field 的數量

7、hdel    key    field :刪除指定的 field,對應的 value 也會被刪除,刪除成功返回 1

8、hexists    key   field   :判斷 key 對應的 field 是否存在,存在返回 1 ,不存在返回 0

9、hincrby    key   field   increment   :給指定的字段的整數值,加上增量 increment,若指定增加的字段不是整數型,會報錯

 

 

七、python 與 redis 交互

運行結果:

 

 

 

 

 

 

 

 

 

 

 

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