分散式系列十: Redis安裝和命令
redis是一個開源的, 記憶體資料結構儲存, 一般用來作為資料庫,快取和訊息代理.
Redis的優勢
多種資料結構
- 字元型別String
- 雜湊型別Hash
- 列表型別List
- 集合型別Set
- 有序集合型別SortedSet
功能豐富
- 超時時間設定
- 可以通過列表型別來實現分散式佇列
- pub/sub 訊息模式
簡單
- 多種操作命令
Redis應用場景
- 快取
- 秒殺,搶購等
- 單點登陸, 分散式session等
- 網站訪問排名
- 訊息佇列
安裝
wget http://download.redis.io/releases/redis-5.0.4.tar.gz tar xzf redis-5.0.4.tar.gz cd redis-5.0.4 make
缺少make包, 則需要通過sudo apt-get install make
安裝
make報錯/bin/sh: cc: command not found
缺少gcc包, 通過sudo apt-get install gcc
如果報錯fatal error: jemalloc/jemalloc.h: No such file or directory
則使用make MALLOC=libc
編譯
可以使用命令make test
測試. 報錯You need tcl 8.5 or newer in order to run the Redis test
則需要安裝tcl包.
安裝方法如下:
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz sudo tar xzvf tcl8.6.1-src.tar.gz-C /usr/local/ cd/usr/local/tcl8.6.1/unix/ sudo ./configure sudo make sudo make install
安裝完成後執行make test
命令成功.
-
需要安裝到指定目錄, 則可以使用
make install PREFIX=/mnt/d/redis
注意新增配置檔案
啟動命令
-
啟動
sh /redis-server ../conf/redis.conf
以後臺程序的方式啟動需要修改redis.conf
檔案的daemonize=yes
-
客戶端連線
sh /redis-cli -h 192.168.1.123 -p 6379
配置檔案中的bind
用來繫結服務端的ip, 為了安全,預設不允許外網訪問
預設保護模式protect-mode=yes
多資料支援
預設支援16個數據庫,databases=16
, 預設使用的是DB 0 . redis資料庫不支援自定義名稱, 且不能單獨做授權, 各個資料庫之間並非完全隔離.flushall
命令可以清空redis中所有的資料.
select 3
轉到索引為3的資料庫
使用命令
-
keys prifix*
查詢到所有開頭為prifix的鍵,pattern
可以使用[? * [] ]匹配 -
EXISTS key
是否存key -
type key
獲取資料結構
字元型別
key的最大儲存為512M.
-
set key value
比較重要的setnx
-
get key
-
incr key
遞增值incrby key [step]
遞增指定的step -
strlen key
獲得長度 -
mget key1 key2 key3
批量獲取多個key的值 -
set key1 value1 key2 value2
批量設定多個鍵值
key的設計可以參看阿里的規範, 例如業務名:表名:id
列表型別
-
lpush key value
左邊push資料,對應的是rpush
-
lpop key
獲取資料, 同時資料被移除,對應的是rpop
-
llen key
列表長度 -
lrange key start stop
獲取片段, start=-1 表示從頭,stop=-1表示到結尾 -
lrem key count value
刪除 -
lset key index value
設定索引的值
雜湊型別
不支援資料型別巢狀, 比如hash中儲存一個list.
hset key field value hget key field hmset key field1 value1 field2 value2 hmget key field1 field2 hgetall key hexists key field hincryby hsetnx hdel key field
集合型別
和list相比, 不能有重複元素, 且是無序的
sadd key member... smembers key sdiff key1 key2 sunion key1 key2
有序集合
zadd key score member zrange key start stop withscores
可以用來做排名統計.
redis的事務
比較雞肋, 不建議使用, 有時候不能回滾
multi
開啟事務;
set get...
等操作為具體的事務操作
exec
提交事務
過期時間
expire key timeout
設定超時時間
ttl key
獲得key過期時間
釋出訂閱
publish channel message
subscribe channel
分散式鎖
可使用setnx
實現.