一篇博客搞定redis基礎
阿新 • • 發佈:2018-06-15
源碼 分發 redis基礎 erb sage psu ogl 每次 常常
redis簡介
redis 一款高性能key-value數據庫,實際上多用作緩存隊列或者消息分發(celery),但是最常常被用來做緩存。
redis安裝
源碼安裝
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make
命令安裝
$sudo apt-get update
$sudo apt-get install redis-server
#brew install redis
redis配置
常用配置項
daemonize no #是否已守護進程方式運行,yes是的,no不是,默認不是 pidfile /var/run/redis.pid 當守護進程模式運行時,redis會把pid寫入pid文件 port 6379 bind 127.0.0.1 timeout 300 loglevel verbose #日誌級別,默認為verbose,其他有debug、notice、warning logfile stdout #日誌輸出方式,當守護進程模式運行時,輸出到/dev/null database 16 #數據庫個數,默認16個 save 900 1 #900秒內有一次變更則同步數據到同步文件 dbfilename dump.rdb本 #地數據庫名字,默認dump.rdb dir ./ #指定本地數據庫存放目錄 salveof 1.1.1.1 30 #主從雙機或者多機收,配置從方指定主方的地址和端口 masterauth 配置主方密碼 requirepass xxxxxx #配置需要密碼訪問,xxxxxx是配置的密碼 maxclients 128 maxmemory 1000000 #單位Bytes appendonly no #指定是否更新操作後盡心日誌記錄,redis會默認的把異步數據寫入磁盤,如果不開啟該選項,可能導致掉電、時候一小段時間內的數據損失(數據永久化的一種方式) appendfilename appendonly.aof #配置更新日誌文件名 appendfsync everysec/always/no #配置更新日誌記錄,no表示等OS進行數據緩存到磁盤,everysec比奧斯每秒一次,always表示每次更新後手動調用fsync()寫入數據到磁盤
redis數據類型
字符串
redis 127.0.0.1:6379> SET name "runoob"
OK
redis 127.0.0.1:6379> GET name
"runoob"
哈希
redis> HMSET myhash field1 "Hello" field2 "World"
"OK"
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
列表
redis 127.0.0.1:6379> lpush runoob redis (integer) 1 redis 127.0.0.1:6379> lpush runoob mongodb (integer) 2 redis 127.0.0.1:6379> lpush runoob rabitmq (integer) 3 redis 127.0.0.1:6379> lrange runoob 0 10 1) "rabitmq" 2) "mongodb" 3) "redis" redis 127.0.0.1:6379>
集合
String的無序集合
redis 127.0.0.1:6379> sadd runoob redis (integer) 1 redis 127.0.0.1:6379> sadd runoob mongodb (integer) 1 redis 127.0.0.1:6379> sadd runoob rabitmq (integer) 1 redis 127.0.0.1:6379> sadd runoob rabitmq (integer) 0 redis 127.0.0.1:6379> smembers runoob 1) "redis" 2) "rabitmq" 3) "mongodb"
有序集合
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
1) "mongodb"
2) "rabitmq"
3) "redis"
redis客戶端使用
redis-cli -h 127.0.0.1 -p 6379 -a ‘QWERasdf1234‘
鍵值(KEY)
SET xxxx yyyy #xxxx就是key
DEL xxxx
DUMP xxxx
EXISTS xxxx
EXPIRE xxxx seconds
MOVE xxxx db(數字)
RANDOMKEY #隨機返回一個key
RENAME xxxxx xxxxxxxxx #重命名key
TYPE xxxx 返回鍵值所存儲的值的類型
字符串
SET key value
GET
GETRANCE key start end
STRLEN #返回key存儲的字符串長度
哈希
HMSET
HSET
HGET
HDEL
HEXISTS
HKEYS key
HMSET q field1 value1 field2 value2
列表
BLPOP
BRPOP
BRPOLPPUSH
LPOP
LPUSH
LRANGE
LREM
...
集合和有序集合
SADD key value
SCARD key 集合的成員數
SREM
SRANGE
ZADD
ZREM
ZRANGE
redis的用作緩存或消息隊列
PUBLISH channel message #發布消息
PSUBSCRIBE pattern #訂閱一個或多個給定模式的頻道
SUBSCRIBE #訂閱一個或多個頻道的信息
UNSUBSCRIBE #退訂頻道
redis的事務機制
每一條命令都是原子性的,每個事務集合不是原子性的。
事務集合
MULTI
SET A A
SET B B
...
EXEC
事務命令
DISCARD取消事務
MULTI+EXEC 開始和執行
WATCH key 監控key
UNWATCH 取消WATCH對所有可以的監控
redis連接測試
redis-cli
auth xxxxxx 密碼認證
PING 測試服務運行與否,運行回PONG
QUIT
SELECT X 切換數據庫
服務器與備份
INFO 查看服務器與備份
CLIENT LIST 列出客戶端
TIME 獲取當下時間
FLUSHALL/FLUSHDB 刪除所有/當前數據庫所有key
MONITOR調試用
SAVE 保存
一篇博客搞定redis基礎