redis 的讀寫效率很高
redis:數(shù)據(jù)庫(kù)(key:value) 鍵值存儲(chǔ)
redis : 是非關(guān)系型數(shù)據(jù)庫(kù),是一個(gè)基于key - values(鍵-值)的存儲(chǔ)窿侈,
redis 存儲(chǔ)的都是鍵和值的類型(存的是一個(gè)字典的對(duì)象)
數(shù)據(jù)存儲(chǔ)在緩存中憔儿,讀取效率高,
打開百度搜素 redis ---> 中文版
redis 安裝
1.下載:打開redis官方網(wǎng)站,推薦下載穩(wěn)定版本(stable)
2.解壓
3.進(jìn)入到解壓的文件夾目錄
生成: sudo make
測(cè)試: sudo make test
將redis的命令安裝到指定的目錄: sudo make install
1.啟動(dòng):進(jìn)入到redis 的文件夾下 梅掠,執(zhí)行 : redis-server redis.conf
2.啟動(dòng):(1.) redis-server (2.) redis-cli
退出redis ctil + c,exit枢析,sudo service redis stop
(1.)關(guān)于 redis 的字符串操作(二進(jìn)制數(shù)據(jù)玉掸,最大限制512MB)
設(shè)置鍵值: set key(鍵) values(值) 例如: set name huahua
查看鍵值: get key(鍵), 獲取:根據(jù)鍵獲取值醒叁,如果不存在此鍵則返回nil
如果要顯示中文再開一個(gè)終端輸入:redis-cli --raw ----> get name
設(shè)置過0期時(shí)間: setex key seconds(秒數(shù)) values(值司浪,在有效時(shí)間內(nèi)泊业,可以是任意) 例如:setex name 10 huahua
替換: setrange key(鍵) offset(偏移量,從哪個(gè)位置開始替換) newvalues
例如: setrange name 2 kkk
判斷key是否存在,不存在則創(chuàng)建: setnx key(鍵) value(值) 例如:setne name xigua
設(shè)置多個(gè)鍵值: mset key1 value1 key2 value2 ... 例如:mset name huahua age 17 book pytho
根據(jù)多個(gè)鍵獲取多個(gè)值 : mget key1 key2 ... 例如:mget name age book
追加值(在末尾追加): append key value 例如:append name nihao
刪除: del key
查看字符串的長(zhǎng)度:strlen key
(2.)values(值)值得操作
例如:set int 10
在10的基礎(chǔ)上減一個(gè) decr int
(3.)鍵的操作
查看所有鍵:keys *
查看名稱中包含a的鍵:keys 'a*' (正則,查看我們想要的key)
判斷鍵是否存在 如果存在返回1啊易,不存在返回0 :exists key1
隨機(jī)返回一個(gè)key(從當(dāng)前數(shù)據(jù)庫(kù)中隨機(jī)返回一個(gè) key) : randomkey
查看鍵對(duì)應(yīng)的value的類型 : type key
刪除鍵及對(duì)應(yīng)的值:del key1 key2 ...
給一個(gè)kay設(shè)置過期時(shí)間脱吱,以秒為單位(如果沒有指定過期時(shí)間則?直存在,直到使?DEL移除):expire key seconds
查看有效時(shí)間认罩,以秒為單位:ttl key (查看過期時(shí)間)
查看鍵'bb'的有效時(shí)間:ttl bb
給一個(gè)key重新命名:rename key newkey
刪除key:del key
(4.)hash類型
hash?于存儲(chǔ)對(duì)象箱蝠,對(duì)象的結(jié)構(gòu)為屬性、值 值的類型為string
field(域,相當(dāng)于字典里面的key鍵)
設(shè)置單個(gè)屬性: hset key field value
獲取?個(gè)屬性的值:hget key field (獲取域下面的值)
設(shè)置多個(gè)鍵和屬性: hmset key field values fiels valuse....
獲取多個(gè)屬性的值: hmget key field field..... (獲取域下面的多個(gè)值)
刪除整個(gè)hash鍵及值垦垂,使?del命令 刪除屬性宦搬,屬性對(duì)應(yīng)的值會(huì)被?起刪除:hdel key field field field .....
獲取所有的域: hkeys key
獲取所有的值: hvals key
獲取所有域和值: hgetall key
獲取鍵的長(zhǎng)度:hlen key
給hash數(shù)據(jù)類型中的域的數(shù)字的值增加指定的值(處理的是數(shù)字類型):hincrby key fiels 數(shù)字
判斷鍵下是否存在某個(gè)域:hexists key field
查看域?qū)?yīng)值的長(zhǎng)度:hstrlen key field
(5.)list數(shù)據(jù)類型
從左面開始插入(先插的在后面):lpush key valuse values....
從右面開始插入(先插的在前面):rpush key valuse values....
查看數(shù)據(jù)(隊(duì)列)所有的值:lrange key start(起始位置,從0開始) end(結(jié)束-1) 例如: lrange lkey 0 -1
根據(jù)索引查找(取值):lindex key index
重新賦值:lset key index value
指定位置插入值:linsert key before|after value(給定一個(gè)值作為參照位置) newvalue
從左面取出,取出后即刪除:lpop key
從右面取出,取出后即刪除:rpop key
查看隊(duì)列的長(zhǎng)度:llen key
截冉俎帧:ltrim key start stop 例如:ltrim key 2 5 ---->5 4 3 2
阻塞時(shí)間,(為0則一直阻塞,知道key對(duì)應(yīng)的list有值,不為0,在設(shè)置的時(shí)間內(nèi),即使取不到值,也結(jié)束):brpop key key1 second
阻塞時(shí)間(同上):blpop
brpoplpush key key2 timeout (叢key右邊取出值,叢左面取的值放在key里面)
redis的發(fā)布與訂閱
訂閱一個(gè)頻道:subscribe channel(頻道名稱) ...
發(fā)布消息:publish channel(頻道) message(消息)
取消訂閱:unsubscribe channel(頻道名稱)
事務(wù)是一個(gè)原子操作:事務(wù)中的命令要么全部被執(zhí)行间校,要么全部都不執(zhí)行。
事物的特性:原子性页慷,一致性憔足,隔離性,持久性
開啟一個(gè)事務(wù):multi
提交一個(gè)事務(wù):exec
取消事務(wù):discard
監(jiān)聽事務(wù):watch
取消監(jiān)聽:unwatch
備份:save 使用這個(gè)命令之后,會(huì)保存一個(gè)dump.rdb
主從備份(一主一從,一主多從):
1).配置要有一個(gè)主節(jié)點(diǎn) :進(jìn)入redis.conf 修改bind 為主節(jié)ip
保存退出酒繁,從新開啟redis服務(wù)
啟動(dòng)redis-cli 鏈接主節(jié)點(diǎn)(redis服務(wù))
2).配置從節(jié)點(diǎn):
進(jìn)入redis.conf 修改bind 為主機(jī)ip
可以修改端口號(hào)
設(shè)置主節(jié)點(diǎn)信息(282行)
保存退出滓彰,重新開啟redis服務(wù)
啟動(dòng)redis-cli -h 從節(jié)點(diǎn)的ip -p 從節(jié)點(diǎn)的port 連接從節(jié)點(diǎn)(redis服務(wù))可以實(shí)現(xiàn)主從備份
安全:
查看密碼:config get requirepass
設(shè)置:congig set requirepass ‘密碼’
認(rèn)證:auth 密碼
取消密碼:congig set requirepass ''