redis 學習筆記1(安裝以及控制檯命令)

爲何要學習這個?html

分佈式技術必會,得益於redis的設計理念,內存數據庫,epoll(多路複用)模型,單線程模型除去了鎖和上下文切換,提升了性能.單線程保證執行順序(輪詢),在分佈式環境下對於數據的一致性和惟一性應該是常常須要考慮到的.java

簡單入門:linux

1.數據結構:(特性對比java 集合)redis

  1. 字符類型(string)
  2. 散列類型(hash)
  3. 列表類型(list 雙向鏈表)
  4. 集合類型(set)
  5. 有序集合(zset)

2.功能:數據庫

  1. 能夠爲每一個key設置超時時間;
  2. 能夠經過列表類型來實現分佈式隊列的操做
  3. 支持發佈訂閱的消息模式

3.存儲centos

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

跟關係型數據庫不同的點數據結構

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

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

4.key 最大521Mdom

 ===================================================================

 實戰  使用: 環境  centos7.0  redis4.0.10 

安裝

1.下載https://redis.io/download

2.解壓  tar -zxvf  安裝包

3.cd redis-4.0.10  

4.執行make 

  (若是出現 *** [adlist.o] Error 127  ,先安裝gcc  命令是:yum install gcc)

 (若是出現zmalloc.h:50:31: 致命錯誤:jemalloc/jemalloc.h:沒有那個文件或目錄  執行命令:make MALLOC=libc)

   4.1 make test  (建議預先編譯查看有沒有問題)

    (若是出現錯誤You need tcl 8.5 or newer in order to run the Redis test  ,

參考:https://blog.csdn.net/luyee2010/article/details/18766911  )

   4.2 make install [PREFIX=/path]完成安裝(指定安裝到什麼目錄)

5(bin).啓動    /redis-server ../redis.conf   後臺運行

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

6客戶端鏈接 (修改配置 redis.conf   bind 0.0.0.0)

./redis-cli -h 127.0.0.1 -p 6379 

7.bin 目錄下的其餘命令

Redis-server 啓動服務

Redis-cli 訪問到redis的控制檯

redis-benchmark 性能測試的工具

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

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

redis-sentinel  sentinel 服務器配置

==================================================================

通用命令,根據key 作相關增刪改查以及設置key的失效時間 (http://www.redis.net.cn/order/3531.html)

各類數據結構的使用

字符類型

賦值和取值

SET key  value

setnx (用來作分佈式鎖)

GET key

遞增數字(原子遞增,默認爲加1)
incr key

incrby key increment  遞增指定的整數  eg: incrby shuaige 10

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 …

llen num  得到列表的長度

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

lrem key count value

lset key index value

LPOP/RPOP : 取數據

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

 

散列類型

不支持數據類型的嵌套(valu 是其餘數據類型,好比list )

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) 方式從小到大

 

 

redis的事務處理

 

MULTI 去開啓事務

 

EXEC 去執行事務(注意,雖然開啓了事務,可是若是執行的過程有問題的話,不會回滾!) 圖中,先hset persin name tom  (persin是hash類型,開啓事務 用zadd persin jinjian 確定報錯,可是查詢 get kkk 依然能夠獲得值)

過時時間

expire key seconds

ttl  得到key的過時時間

 

發佈訂閱

publish channel message

subscribe channel [ …]

 

 

數據淘汰策略

redis 內存數據集大小上升到必定大小的時候,就會施行數據淘汰策略。redis 提供 6種數據淘汰策略:
volatile-lru:從已設置過時時間的數據集(server.db[i].expires)中挑選最近最少使用的數據淘汰
volatile-ttl:從已設置過時時間的數據集(server.db[i].expires)中挑選將要過時的數據淘汰
volatile-random:從已設置過時時間的數據集(server.db[i].expires)中任意選擇數據淘汰
allkeys-lru:從數據集(server.db[i].dict)中挑選最近最少使用的數據淘汰
allkeys-random:從數據集(server.db[i].dict)中任意選擇數據淘汰
no-enviction(驅逐):禁止驅逐數據

 

數據儲存方式格式

AOF和RDB

RDB 表示實時存儲,AOF只記錄執行的語句,啓動的時候執行語句

默認RDB

 

#補充相關linux命令:

檢測後臺進程是否存在 ps -ef |grep redis
檢測6379端口是否在監聽 netstat -lntp | grep 6379

# redis 監控工具

redis-stat

相關文章
相關標籤/搜索