Redis基本安裝和配置詳解
1.安裝
wget http://download.redis.io/releases/redis-3.2.3.tar.gz
編譯安裝:
tar xf redis-3.2.3.tar.gz
cd redis-3.2.3
make && make install
配置:
mkdir /etc/redis 建立設定檔存放目錄
cp -a redis.conf /etc/redis/6379.conf 複製設定檔
cp -a utils/redis_init_script /etc/init.d/redis 複製啟動指令碼
mkdir -p /home/redis-home 建立資料存放目錄
ip=`ip addr show eth0 | grep eth0 | grep inet | cut -d" " -f 6 | cut -d"/" -f 1` 擷取介面ip
sed -i "s/^bind.*$/bind 127.0.0.1 $ip/" /etc/redis/6379.conf 配置bind綁定ip地址
sed -i 's/^daemonize no/daemonize yes/' /etc/redis/6379.conf 配置開機啟動為yes
sed -i 's/^dir .\//dir \/home\/redis-home/' /etc/redis/6379.conf 配置資料存放檔案為建立的redis-home目錄
sed -i '3i# chkconfig: - 86 14\n# descript: redis init script' /etc/init.d/redis 配置開機檔案加入chkconfig描述
啟動:
chkconfig --add redis 配置reids加入開機啟動
chkconfig redis on 配置redis開機啟動
service redis start 啟動redis
dbsize 測試redis是否正常工作
service redis stop 關閉redis
2.redis.conf
daemonize yes 是否以背景程式運行,預設no
pidfile /var/run/redis.pid 後台運行,需要制定pid
port 6379 預設監聽連接埠6379
timeout 0 連結逾時時間
loglevel notice 日誌等級,debug,verbose,notice,warning
logfile "" 輸出記錄檔,'stdout'標誌輸出,如果以後台運行,輸出到/dev/null
# syslog-enabled no 是否輸出到系統日誌
# syslog-ident redis 系統日誌標識符
# syslog-facility local0
databases 16 設定資料庫數目
save 900 1
save 300 10
save 60 10000 過了900s並且有1個key發生改變,就會觸發save動作
rdbcompression yes 儲存資料時是否壓縮資料,預設yes
dbfilename dump.rdb 儲存dump資料的檔案名稱
dir ./ 工作目錄,必須是目錄而不是檔案
slaveof <masterip> <masterport> slaveof把一個redis執行個體設定為另一個redis的從庫
masterauth <master-password>
slave-serve-stale-data yes
# requirepass foobared 指定要求輸入密碼登入
# maxclients 10000 串連最大數限制,建議不限制
# maxmemory <bytes> 使用最大記憶體限制,建議不限制
# maxmemory-policy noeviction 預設配置:volatile-lru:使用lRUnning演算法來刪除過去的set ,allkeys-lru 刪除任何遵循LRU演算法的key,volatile-random,隨機刪除到期的set中的key,allkeys-random,隨機刪除一個key,volatile-ttl,刪除最近即將到期的key.noeviction,根本不到期,寫操作報錯
appendonly no 開啟該模式後,會把每一個操作記錄在appendonly.aof檔案中,在redis重啟時被讀取到記憶體中重新構建資料庫
appendfilename "appendonly.aof"
# appendfsync always
appendfsync everysec
# appendfsync no no:不fsync, 只是通知OS可以flush資料了,具體是否flush取決於OS.效能更好.
always: 每次寫入append only 記錄檔後都會fsync . 效能差,但很安全.
everysec: 沒間隔1秒進行一次fsync. 折中
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb append only 檔案的自動重寫,為0時關閉重寫,
slowlog-log-slower-than 10000 負數則關閉slow log,0則會導致每個命令都被記錄
slowlog-max-len 128
REDIS CLUSTER
redis基礎資料型別 (Elementary Data Type)
String redis最基本的類型,可以是任意類型的字串,也可以是數字
SET 賦值,用法: SET key value
GET 取值,用法: GET key
INCR 遞增數字,僅僅對數字類型的鍵有用,相當於Java的i++運算,用法: INCR key
INCRBY 增加指定的數字,僅僅對數字類型的鍵有用,相當於Java的i+=3,用法: INCRBY key increment ,意思是key自增increment,increment可以為負數,表示減少。
DECR 遞減數字,僅僅對數字類型的鍵有用,相當於Java的i–,用法: DECR key
DECRBY 減少指定的數字,僅僅對數字類型的鍵有用,相當於Java的i-=3,用法: DECRBY key decrement ,意思是key自減decrement,decrement可以為正數,表示增加。
INCRBYFLOAT 增加指定浮點數,僅僅對數字類型的鍵有用,用法: INCRBYFLOAT key increment
APPEND 向尾部追加值,相當於Java中的”hello”.append(“ world”),用法: APPEND key value
STRLEN 擷取字串長度,用法: STRLEN key
MSET 同時設定多個key的值,用法: MSET key1 value1 [key2 value2 ...]
MGET 同時擷取多個key的值,用法: MGET key1 [key2 ...]
Hash 多個key-value對的集合,可以用來儲存物件,相當於Java中的HashMap<String,String>
HSET 賦值,用法: HSET key field value
HMSET 一次賦值多個欄位,用法: HMSET key field1 value1 [field2 values]
HGET 取值,用法: HSET key field
HMGET 一次取多個欄位的值,用法: HMSET key field1 [field2]
HGETALL 一次取所有欄位的值,用法: HGETALL key
HEXISTS 判斷欄位是否存在,用法: HEXISTS key field
HSETNX 當欄位不存在時賦值,用法: HSETNX key field value
HINCRBY 增加數字,僅對數字類型的值有用,用法: HINCRBY key field increment
HDEL 刪除欄位,用法: HDEL key field
HKEYS 擷取所有欄位名,用法: HKEYS key
HVALS 擷取所有欄位值,用法: HVALS key
HLEN 擷取欄位數量,用法: HLEN key
List 雙向鏈表
LPUSH 向列表左端添加元素,用法: LPUSH key value
RPUSH 向列表右端添加元素,用法: RPUSH key value
LPOP 從列表左端彈出元素,用法: LPOP key
RPOP 從列表右端彈出元素,用法: RPOP key
LLEN 擷取列表中元素個數,用法: LLEN key
LRANGE 擷取列表中某一片段的元素,用法: LRANGE key start stop ,index從0開始,-1表示最後一個元素
LREM 刪除列表中指定的值,用法: LREM key count value ,刪除列表中前count個值為value的元素,當count>0時從左邊開始數,count<0時從右邊開始數,count=0時會刪除所有值為value的元素
LINDEX 擷取指定索引的元素值,用法: LINDEX key index
LSET 設定指定索引的元素值,用法: LSET key index value
LTRIM 只保留列表指定片段,用法: LTRIM key start stop ,包含start和stop
LINSERT 像列表中插入元素,用法: LINSERT key BEFORE|AFTER privot value ,從左邊開始尋找值為privot的第一個元素,然後根據第二個參數是BEFORE還是AFTER決定在該元素的前面還是後面插入value
RPOPLPUSH 將元素從一個列錶轉義到另一個列表,用法: RPOPLPUSH source destination
Set 內部實現是一個 value為null的HashMap,相當於Java中的HashSet<String>
SADD 添加元素,用法: SADD key value1 [value2 value3 ...]
SREM 刪除元素,用法: SREM key value2 [value2 value3 ...]
SMEMBERS 獲得集合中所有元素,用法: SMEMBERS key
SISMEMBER 判斷元素是否在集合中,用法: SISMEMBER key value
SDIFF 對集合做差集運算,用法: SDIFF key1 key2 [key3 ...] ,先計算key1和key2的差集,然後再用結果與key3做差集
SINTER 對集合做交集運算,用法: SINTER key1 key2 [key3 ...]
SUNION 對集合做並集運算,用法: SUNION key1 key2 [key3 ...]
SCARD 獲得集合中元素的個數,用法: SCARD key
SDIFFSTORE 對集合做差集並將結果儲存,用法: SDIFFSTORE destination key1 key2 [key3 ...]
SINTERSTORE 對集合做交集運算並將結果儲存,用法: SINTERSTORE destination key1 key2 [key3 ...]
SUNIONSTORE 對集合做並集運算並將結果儲存,用法: SUNIONSTORE destination key1 key2 [key3 ...]
SRANDMEMBER 隨機擷取集合中的元素,用法: SRANDMEMBER key [count] ,當count>0時,會隨機中集合中擷取count個不重複的元素,當count<0時,隨機中集合中擷取|count|和可能重複的元素。
SPOP 從集合中隨機彈出一個元素,用法: SPOP key
Sorted Set 有序的set類型
ZADD 添加元素,用法: ZADD key score1 value1 [score2 value2 score3 value3 ...]
ZSCORE 擷取元素的分數,用法: ZSCORE key value
ZRANGE 擷取排名在某個範圍的元素,用法: ZRANGE key start stop [WITHSCORE] ,按照元素從小到大的順序排序,從0開始編號,包含start和stop對應的元素,WITHSCORE選項表示是否返回元素分數
ZREVRANGE 擷取排名在某個範圍的元素,用法: ZREVRANGE key start stop [WITHSCORE] ,和上一個命令用法一樣,只是這個倒序排序的。
ZRANGEBYSCORE 擷取指定分數範圍內的元素,用法: ZRANGEBYSCORE key min max ,包含min和max, (min 表示不包含min, (max 表示不包含max, +inf 表示無窮大
ZINCRBY 增加某個元素的分數,用法: ZINCRBY key increment value
ZCARD 擷取集合中元素的個數,用法: ZCARD key
ZCOUNT 擷取指定分數範圍內的元素個數,用法: ZCOUNT key min max ,min和max的用法和5中的一樣
ZREM 刪除一個或多個元素,用法: ZREM key value1 [value2 ...]
ZREMRANGEBYRANK 按照排名範圍刪除元素,用法: ZREMRANGEBYRANK key start stop
ZREMRANGEBYSCORE 按照分數範圍刪除元素,用法: ZREMRANGEBYSCORE key min max ,min和max的用法和4中的一樣
ZRANK 擷取正序排序的元素的排名,用法: ZRANK key value
ZREVRANK 擷取逆序排序的元素的排名,用法: ZREVRANK key value