redis

1. 安裝redis

yum install redis 或wget官網(wǎng)的最新版本

配置文件默認(rèn)在/etc/redis.conf


redis-benchmark 性能測試工具

redis-check-aof appendonly.aof日志校驗(yàn)工具

redis-check-dump?dump.rdb日志校驗(yàn)工具

redis-cli redis 客戶端

redis-server redis服務(wù)器端


2. redis服務(wù)的啟動(dòng)和redis客戶端的連接

啟動(dòng):redis-server /etc/redis.conf

cli連接:redis-cli 或者telnet ip port, 不建議用telnet,因?yàn)闆]有智能命令行


3. redis配置文件全解

==基本配置

daemonize no 是否以后臺(tái)進(jìn)程啟動(dòng)

databases 16 創(chuàng)建database的數(shù)量(默認(rèn)選中的是database 0)

save 900 1? ? #刷新快照到硬盤中急前,必須滿足兩者要求才會(huì)觸發(fā)粱侣,即900秒之后至少1個(gè)關(guān)鍵字發(fā)生變化。

save 300 10? #必須是300秒之后至少10個(gè)關(guān)鍵字發(fā)生變化熄云。

save 60 10000 #必須是60秒之后至少10000個(gè)關(guān)鍵字發(fā)生變化葫录。

stop-writes-on-bgsave-error yes? ? #后臺(tái)存儲(chǔ)錯(cuò)誤停止寫剧董。

rdbcompression yes? ? #使用LZF壓縮rdb文件。

rdbchecksum yes? ? #存儲(chǔ)和加載rdb文件時(shí)校驗(yàn)茫负。

dbfilename dump.rdb? ? #設(shè)置rdb文件名蕉鸳。

dir ./? ? #設(shè)置工作目錄,rdb文件會(huì)寫入該目錄。


==主從配置

slaveof <masterip> <masterport> 設(shè)為某臺(tái)機(jī)器的從服務(wù)器

masterauth <master-password>? 連接主服務(wù)器的密碼

slave-serve-stale-data yes? # 當(dāng)主從斷開或正在復(fù)制中,從服務(wù)器是否應(yīng)答

slave-read-only yes #從服務(wù)器只讀

repl-ping-slave-period 10 #從ping主的時(shí)間間隔,秒為單位

repl-timeout 60 #主從超時(shí)時(shí)間(超時(shí)認(rèn)為斷線了),要比period大

slave-priority 100? ? #如果master不能再正常工作潮尝,那么會(huì)在多個(gè)slave中榕吼,選擇優(yōu)先值最小的一個(gè)slave提升為master,優(yōu)先值為0表示不能提升為master勉失。

repl-disable-tcp-nodelay no #主端是否合并數(shù)據(jù),大塊發(fā)送給slave

slave-priority 100 從服務(wù)器的優(yōu)先級(jí),當(dāng)主服掛了,會(huì)自動(dòng)挑slave priority最小的為主服


===安全

requirepass foobared # 需要密碼

rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 #如果公共環(huán)境,可以重命名部分敏感命令 如config


===限制

maxclients 10000 #最大連接數(shù)

maxmemory <bytes> #最大使用內(nèi)存

maxmemory-policy volatile-lru #內(nèi)存到極限后的處理

volatile-lru -> LRU算法刪除過期key

allkeys-lru -> LRU算法刪除key(不區(qū)分過不過期)

volatile-random -> 隨機(jī)刪除過期key

allkeys-random -> 隨機(jī)刪除key(不區(qū)分過不過期)

volatile-ttl -> 刪除快過期的key

noeviction -> 不刪除,返回錯(cuò)誤信息

#解釋 LRU ttl都是近似算法,可以選N個(gè),再比較最適宜T踢出的數(shù)據(jù)

maxmemory-samples 3


====日志模式

appendonly no #是否需要AOF日志

appendfsync no # 系統(tǒng)緩沖,統(tǒng)一寫,速度快

appendfsync always # 系統(tǒng)不緩沖,直接寫,慢,丟失數(shù)據(jù)少

appendfsync everysec #折衷,每秒寫1次

no-appendfsync-on-rewrite no #為yes,則其他線程的數(shù)據(jù)放內(nèi)存里,合并寫入(速度快,容易丟失的多)

auto-AOF-rewrite-percentage 100 當(dāng)前aof文件是上次重寫是大N%時(shí)重寫

auto-AOF-rewrite-min-size 64mb aof重寫至少要達(dá)到的大小


====慢查詢

slowlog-log-slower-than 10000 #記錄響應(yīng)時(shí)間大于10000微秒的慢查詢

slowlog-max-len 128? # 最多記錄128條


====服務(wù)端命令

time? 返回時(shí)間戳+微秒

dbsize 返回key的數(shù)量

bgrewriteaof 重寫aof

bgsave 后臺(tái)開啟子進(jìn)程dump數(shù)據(jù)

save 阻塞進(jìn)程dump數(shù)據(jù)

lastsave

slaveof host port 做host port的從服務(wù)器(數(shù)據(jù)清空,復(fù)制新主內(nèi)容)

slaveof no one 變成主服務(wù)器(原數(shù)據(jù)不丟失,一般用于主服失敗后)

flushdb? 清空當(dāng)前數(shù)據(jù)庫的所有數(shù)據(jù)

flushall 清空所有數(shù)據(jù)庫的所有數(shù)據(jù)(誤用了怎么辦?)

shutdown [save/nosave] 關(guān)閉服務(wù)器,保存數(shù)據(jù),修改AOF(如果設(shè)置)

slowlog get 獲取慢查詢?nèi)罩?/p>

slowlog len 獲取慢查詢?nèi)罩緱l數(shù)

slowlog reset 清空慢查詢

info []

config get 選項(xiàng)(支持*通配)

config set 選項(xiàng) 值

config rewrite 把值寫到配置文件

config restart 更新info命令的信息

debug object key #調(diào)試選項(xiàng),看一個(gè)key的情況

debug segfault #模擬段錯(cuò)誤,讓服務(wù)器崩潰

object key (refcount|encoding|idletime)

monitor #打開控制臺(tái),觀察命令(調(diào)試用)

client list #列出所有連接

client kill #殺死某個(gè)連接? CLIENT KILL 127.0.0.1:43501

client getname #獲取連接的名稱 默認(rèn)nil

client setname "名稱" #設(shè)置連接名稱,便于調(diào)試


====連接命令===

auth 密碼 #密碼登陸(如果有密碼)

ping #測試服務(wù)器是否可用

echo "some content" #測試服務(wù)器是否正常交互

select 0/1/2... #選擇數(shù)據(jù)庫

quit #退出連接


4. redis 常用命令

見官網(wǎng) https://redis.io/commands

常用

select move

set mset get mget getset?keys rename renamenx randomkey exist type

ttl expire persist

incr incrby decr decrby

鏈表

lpush rpush lrange lrem(刪特定值) ltrim(截取指定范圍的值) lindex(獲取指定index的值) llen linsert

rpop|lpush task job(實(shí)現(xiàn)原子的將task任務(wù)隊(duì)列移到處理任務(wù)中羹蚣,并保證不丟失每個(gè)task)

字節(jié)操作

bitcount bitfield bitop bitpos getbit setbit

用位圖法統(tǒng)計(jì)用戶登錄情況,節(jié)省內(nèi)存和空間

無序集合

sadd smembers srem(刪指定值) spop(隨機(jī)刪除一個(gè)值) sismember scard(獲取元素個(gè)數(shù))?

smove(在2個(gè)集合中移動(dòng)元素) sinter(求交集) sunion(求并集) sdiff(求差集)

有序集合?

zadd zrange乱凿。顽素。。徒蟆。胁出。。 能實(shí)現(xiàn)部分聚合運(yùn)算和類sql的運(yùn)算

hash

hset hmset hgetall hdel hlen hexists hinrby

事務(wù)操作---->訂票系統(tǒng)

watch multi exec discard unwatch

pub/sub發(fā)布訂閱模式-----> 在線聊天段审,消息推送

publish subscribe psubscribe(同時(shí)監(jiān)聽多個(gè)頻道)


5. 主從配置方案

1主2從

master:

關(guān)閉dump.rdb開啟aof

slave:

指定slave-of

某個(gè)slave開dump.rdb功能

配置從為只讀模式全蝶,否則出現(xiàn)主從不同步問題


6. 運(yùn)維相關(guān)

6.1 運(yùn)維常用命令

TIME 查看時(shí)間戳與微秒數(shù)

DBSIZE 查看當(dāng)前庫中的key數(shù)量

BGREWRITEAOF 后臺(tái)進(jìn)程重寫AOF

BGSAVE?????? 后臺(tái)保存rdb快照

SAVE???????? 保存rdb快照

LASTSAVE???? 上次保存時(shí)間

SLAVEOF????? 設(shè)為slave服務(wù)器

FLUSHALL???? 清空所有db

FLUSHDB????? 清空當(dāng)前db

SHUTDOWN[""|save|nosave]???? 斷開連接,關(guān)閉服務(wù)器

SLOWLOG?? 顯示慢查詢

INFO????? 顯示服務(wù)器信息

CONFIG GET 獲取配置信息

CONFIG SET 設(shè)置配置信息

MONITOR??? 打開控制臺(tái)

SYNC?????? 主從同步

CLIENT LIST 客戶端列表

CLIENT KILL 關(guān)閉某個(gè)客戶端

CLIENT SETNAME 為客戶端設(shè)置名字

CLIENT GETNAME 獲取客戶端名字


6.2 運(yùn)維查看redis狀態(tài)

1: 內(nèi)存

#Memory

used_memory:859192

數(shù)據(jù)結(jié)構(gòu)的空間

used_memory_rss:7634944

實(shí)占空間

mem_fragmentation_ratio:8.89

前2者的比例,1.N為佳

2:

主從復(fù)制

#Replication

role:slave

master_host:192.168.1.128

master_port:6379

master_link_status:up

3:持久化

#Persistence

rdb_changes_since_last_save:0

rdb_last_save_time:1375224063

4:fork耗時(shí)

#Status

latest_fork_usec:936? 上次持久化花費(fèi)微秒

5:慢日志

config

get/set slowlog-log-slower-than

CONFIG

get/SET slowlog-max-len

slow

log get 獲取慢日志


7. redis key 設(shè)計(jì)技巧

7.1 基本設(shè)計(jì)

1. 把表名轉(zhuǎn)換為key前綴如, tag:

2: 第2段放置用于區(qū)分區(qū)key的字段--對應(yīng)mysql中的主鍵的列名,如userid

3: 第3段放置主鍵值,如2,3,4...., a , b ,c

4: 第4段,寫要存儲(chǔ)的列名

7.2 類似索引設(shè)計(jì)

需要建索引的定義在前面

之后在在7.1中進(jìn)行詳細(xì)查詢


8. redis 參考書

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市寺枉,隨后出現(xiàn)的幾起案子抑淫,更是在濱河造成了極大的恐慌,老刑警劉巖姥闪,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件始苇,死亡現(xiàn)場離奇詭異,居然都是意外死亡甘畅,警方通過查閱死者的電腦和手機(jī)埂蕊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門往弓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疏唾,“玉大人,你說我怎么就攤上這事函似』痹啵” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵撇寞,是天一觀的道長顿天。 經(jīng)常有香客問我,道長蔑担,這世上最難降的妖魔是什么牌废? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮啤握,結(jié)果婚禮上鸟缕,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好懂从,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布授段。 她就那樣靜靜地躺著,像睡著了一般番甩。 火紅的嫁衣襯著肌膚如雪侵贵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天缘薛,我揣著相機(jī)與錄音窍育,去河邊找鬼。 笑死宴胧,一個(gè)胖子當(dāng)著我的面吹牛蔫骂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牺汤,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼辽旋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了檐迟?” 一聲冷哼從身側(cè)響起补胚,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎追迟,沒想到半個(gè)月后溶其,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡敦间,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年瓶逃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廓块。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡厢绝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出带猴,到底是詐尸還是另有隱情昔汉,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布拴清,位于F島的核電站靶病,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏口予。R本人自食惡果不足惜娄周,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沪停。 院中可真熱鬧煤辨,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泻轰,卻和暖如春技肩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浮声。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工虚婿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泳挥。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓然痊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親屉符。 傳聞我的和親對象是個(gè)殘疾皇子剧浸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容