1. 程式人生 > >一篇博客搞定redis基礎

一篇博客搞定redis基礎

源碼 分發 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基礎