redis筆記1

存儲結構redis

  1. 字符類型
  2. 散列類型
  3. 列表類型
  4. 集合類型
  5. 有序集合
  6. 能夠爲每一個key設置超時時間;
  7. 能夠經過列表類型來實現分佈式隊列的操做
  8. 支持發佈訂閱的消息模式
  9. 提供了不少命令與redis進行交互
  10. 數據緩存(商品數據、新聞、熱點數據)
  11. 單點登陸
  12. 秒殺、搶購
  13. 網站訪問排名…
  14. 應用的模塊開發

功能

簡單

redis的應用場景

 

redis的安裝

  1. 下載redis安裝包
  2. tar -zxvf 安裝包
  3. 在redis目錄下 執行 make
  4. 能夠經過make test測試編譯狀態
  5. make install [prefix=/path]完成安裝

 

啓動中止redis

./redis-server ../redis.conf數據庫

./redis-cli shutdown緩存

若是有lua腳本執行了死循環,須要用 ./redis-cli shutdown nosave 才能關閉安全

之後臺進程的方式啓動,修改redis.conf   daemonize =yes服務器

鏈接到redis的命令數據結構

./redis-cli -h 127.0.0.1 -p 6379app

容許遠程鏈接的設置 分佈式

將 bind 127.0.0.1 使用#註釋掉,改成# bind 127.0.0.1(bind配置的是容許鏈接的ip,默認只容許本機鏈接;若遠程鏈接需註釋掉,或改成0.0.0.0)

將 protected-mode yes 改成 protected-mode no(3.2以後加入的新特性,目的是禁止公網訪問redis cache,加強redis的安全性)


 

 

其餘命令說明

Redis-server 啓動服務工具

Redis-cli 訪問到redis的控制檯性能

redis-benchmark 性能測試的工具

redis-check-aof aof文件進行檢測的工具

redis-check-dump  rdb文件檢查工具

redis-sentinel  sentinel 服務器配置

多數據支持

默認支持16個數據庫;能夠理解爲一個命名空間

跟關係型數據庫不同的點

  1. redis不支持自定義數據庫名詞
  2. 每一個數據庫不能單獨設置受權
  3. 每一個數據庫之間並非徹底隔離的。 能夠經過flushall命令清空redis實例面的全部數據庫中的數據

經過  select dbid 去選擇不一樣的數據庫命名空間 。 dbid的取值範圍默認是0 -15

 

使用入門

  1. 得到一個符合匹配規則的鍵名列表

keys pattern  [? / * /[]]

 

keys mic:hobby

 

  1. 判斷一個鍵是否存在 , EXISTS key
  2. type key 去得到這個key的數據結構類型

各類數據結構的使用

字符類型

一個字符類型的key默認存儲的最大容量是512M

賦值和取值

SET key  value

GET key

遞增數字
incr key

 

錯誤的演示

int value= get key;

value =value +1;

set key value;

key的設計

對象類型:對象id:對象屬性:對象子屬性

建議對key進行分類,同步在wiki統一管理

短信重發機制:sms:limit:mobile 138。。。。。 expire

 

incryby key increment  遞增指定的整數

decr key   原子遞減

append key value   向指定的key追加字符串

strlen  key  得到key對應的value的長度

mget  key key..  同時得到多個key的value

mset key value  key value  key value …

setnx

列表類型

list, 能夠存儲一個有序的字符串列表

LPUSH/RPUSH: 從左邊或者右邊push數據

LPUSH/RPUSH key value value …

{17 20 19 18 16}

 

llen num  得到列表的長度

lrange key  start stop   ;  索引能夠是負數, -1表示最右邊的第一個元素

lrem key count value 刪除指定索引的值

lset key index value 設置指定索引的值

LPOP/RPOP : 取數據,取後數據即被從列表刪除

應用場景:能夠用來作分佈式消息隊列

散列類型

hash key value  不支持數據類型的嵌套

比較適合存儲對象

person

age  18

sex   男

name mic

..

hset key field value

hget key filed

 

hmset key filed value [filed value …]  一次性設置多個值

hmget key field field …  一次性得到多個值

hgetall key  得到hash的全部信息,包括key和value

hexists key field 判斷字段是否存在。 存在返回1. 不存在返回0

hincryby

hsetnx

hdel key field [field …] 刪除一個或者多個字段

集合類型

set 跟list 不同的點。 集合類型不能存在重複的數據。並且是無序的

sadd key member [member ...] 增長數據; 若是value已經存在,則會忽略存在的值,而且返回成功加入的元素的數量

srem key member  刪除元素

smembers key 得到全部數據

 

sdiff key key …  對多個集合執行差集運算

sunion 對多個集合執行並集操做, 同時存在在兩個集合裏的全部值

有序集合

zadd key score member

zrange key start stop [withscores] 去得到元素。 withscores是能夠得到元素的分數

若是兩個元素的score是相同的話,那麼根據(0<9<A<Z<a<z) 方式從小到大

網站訪問的前10名。

redis的事務處理

MULTI 去開啓事務

set userinfo:name victor 返回QUEUED

set userinfo:age 18 返回 QUEUED

EXEC 去執行事務

    exec 提交執行事務
在執行中才報錯的語句,事務不會回滾。

過時時間

expire key seconds

ttl  得到key的過時時間

 

發佈訂閱

publish channel message

subscribe channel [ …]

 

分片策略:codis . twmproxy

 

redis實現分佈式鎖

數據庫能夠作 activemq

 

緩存 -redis  setnx

 

zookeeper 

相關文章
相關標籤/搜索