redis配置資訊以及常用命令

前言

本來不打算寫這篇的,因為網上有很多這種的,最後想想,既然打算做一個redis系列,還是把這一篇補上,剛好這段時間有個同事做了一個redis的基礎培訓,整理的很好,就拿來借用一下,但是我們實際開發中其實用不了那麼多,我們對這些配置和命令有個大概的了解就行,也不用死記硬背的把每個命令和配置記住,當然諸位如果能記住那就更好啦。

關於redis的介紹就不多說了,持久化,速度快,單執行緒,基於記憶體。

配置文件

redis的配置文件是redis.conf。我們上次安裝的時候把它放在了/use/local/redis/etc/redis.conf,默認的配置文件應該在安裝目錄下的src/redis.conf

配置文件的內容有很多

1、Redis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程

daemonize no

2、當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定

pidfile /var/run/redis.pid

3、指定Redis監聽埠,默認埠為6379

port 6379

4、綁定的主機地址

bind 127.0.0.1

5、當 客戶端閑置多長時間後關閉連接,如果指定為0,表示關閉該功能

timeout 300

6、指定日誌記錄級別,Redis總共支援四個級別:debug、verbose、notice、warning,默認為verbose

loglevel verbose

7、日誌記錄方式,默認為標準輸出,如果配置Redis為守護進程方式運行,而這裡又配置為日誌記錄方式為標準輸出,則日誌將會發送給/dev/null,如果需要存儲日誌可以設置具體文件名。

logfile 「/home/gdmt/mastercom/redis-4.0.5/bin/log_master.log」

8、設置資料庫的數量,默認資料庫為0,可以使用SELECT 命令在連接上指定資料庫id

databases 16

9、指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合

save  Redis默認配置文件中提供了三個條件:  save 900 1  save 300 10  save 60 10000

分別表示900秒(15分鐘)內有1個更改,300秒(5分鐘)內有10個更改以及60秒內有10000個更改。

10、指定存儲至本地資料庫時是否壓縮數據,默認為yes,Redis採用LZF壓縮,如果為了節省CPU時間,可以關閉該選項,但會導致資料庫文件變的巨大

rdbcompression yes

11、指定本地資料庫文件名,默認值為dump.rdb

dbfilename dump.rdb

12、指定本地資料庫存放目錄

dir 「/home/mastercom/redis-4.0.5/bin」

13、設置當本機為slav服務時,設置master服務的IP地址及埠,在Redis啟動時,它會自動從master進行數據同步

slaveof 127.0.0.1:6399

14、當master服務設置了密碼保護時,slav服務連接master的密碼

masterauth 123456

15、設置Redis連接密碼,如果配置了連接密碼,客戶端在連接Redis時需要通過AUTH 命令提供密碼,默認關閉

requirepass foobared

16、設置同一時間最大客戶端連接數,默認無限制,Redis可以同時打開的客戶端連接數為Redis進程可以打開的最大文件描述符數,如果設置 maxclients 0,表示不作限制。當客戶端連接數到達限制時,Redis會關閉新的連接並向客戶端返回max number of clients reached錯誤資訊

maxclients 1000  

17、指定Redis最大記憶體限制,Redis在啟動時會把數據載入到記憶體中,達到最大記憶體後,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理 後,仍然到達最大記憶體設置,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放記憶體,Value會存放在swap區

maxmemory

18、指定是否在每次更新操作後進行日誌記錄,Redis在默認情況下是非同步的把數據寫入磁碟,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為 redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在於記憶體中。默認為no

appendonly no

19、指定更新日誌文件名,默認為appendonly.aof

appendfilename appendonly.aof

總結一下

上面那麼多配置,我和大家一樣沒有都記住,只是了解一個大概,要用的時候能查就行,上面很多都是默認配置,感覺一般要設置的下面這幾個

daemonize yes  port  埠號  bind ip  slaveof <masterip> <masterport>  requirepass foobared

常用命令

針對key的命令

exists(key):確認一個key是否存在  del(key):刪除一個key  type(key):返回值的類型  keys(pattern):返回滿足給定pattern的所有key  randomkey:隨機返回key空間的一個  keyrename(oldname, newname):重命名key  dbsize:返回當前資料庫中key的數目  expire:設定一個key的活動時間(s)  ttl:獲得一個key的活動時間  move(key, dbindex):移動當前資料庫中的key到dbindex資料庫  flushdb:刪除當前選擇資料庫中的所有key--慎用  flushall:刪除所有資料庫中的所有key--慎用

真正常用的就

exists key  del key  type key  dbsize  expire

針對String類型的命令

set(key, value):給資料庫中名稱為key的string賦予值value  get(key):返回資料庫中名稱為key的string的value  getset(key, value):給名稱為key的string賦予上一次的value  mget(key1, key2,…, key N):返回庫中多個string的value  setnx(key, value):如果key不存在,添加string,名稱為key,值為value  setex(key, time, value):向庫中添加string,設定過期時間time  mset(key N, value N):批量設置多個string的值  msetnx(key N, value N):如果所有名稱為key 的string都不存在 就添加  incr(key):名稱為key的string增1操作  incrby(key, integer):名稱為key的string增加integer  decr(key):名稱為key的string減1操作  decrby(key, integer):名稱為key的string減少integer  append(key, value):名稱為key的string的值附加value  substr(key, start, end):返回名稱為key的string的value的子串

我認為常用的

set  get  mset  mget  incr  decr

針對List類型

rpush(key, value):在名稱為key的list尾添加一個值為value的元素  lpush(key, value):在名稱為key的list頭添加一個值為value的 元素  llen(key):返回名稱為key的list的長度  lrange(key, start, end):返回名稱為key的list中start至end之間的元素,-1是最後一位的索引  ltrim(key, start, end):截取名稱為key的list  lindex(key, index):返回名稱為key的list中index位置的元素  lset(key, index, value):給名稱為key的list中index位置的元素賦值  lrem(key, count, value):刪除count個key的list中值為value的元素  lpop(key):返回並刪除名稱為key的list中的首元素  rpop(key):返回並刪除名稱為key的list中的尾元素  blpop(key1, key2,… key N, timeout):lpop命令的block版本。  brpop(key1, key2,… key N, timeout):rpop的block版本。  rpoplpush(srckey, dstkey):返回並刪除名稱為srckey的list的尾元素,並將該元素添加到名稱為dstkey的list的頭部  

一樣我認為常用的,但是感覺list 用的不多

rpush  lpush  rlang  llen  lpop  rpop

針對set類型

sadd(key, member):向名稱為key的set中添加元素member  srem(key, member) :刪除名稱為key的set中的元素member  spop(key) :隨機返回並刪除名稱為key的set中一個元素  smove(srckey, dstkey, member) :移到集合元素  scard(key) :返回名稱為key的set的基數  sismember(key, member) :member是否是名稱為key的set的元素  sinter(key1, key2,…key N) :求交集  sinterstore(dstkey, (keys)) :求交集並將交集保存到dstkey的集合  sunion(key1, (keys)) :求並集  sunionstore(dstkey, (keys)) :求並集並將並集保存到dstkey的集合  sdiff(key1, (keys)) :求差集  sdiffstore(dstkey, (keys)) :求差集並將差集保存到dstkey的集合  smembers(key) :返回名稱為key的set的所有元素  srandmember(key) :隨機返回名稱為key的set的一個元素

感覺這個是用的最少了,很多都記不住,就知道添加和讀取.zset 和set的都用的很少

sadd  smembers    sadd  zrange  

針對Hash類型

hset(key, field, value):向名稱為key的hash中添加元素field  hget(key, field):返回名稱為key的hash中field對應的value  hmget(key, (fields)):返回名稱為key的hash中field i對應的value  hmset(key, (fields)):向名稱為key的hash中添加元素field  hincrby(key, field, integer):將名稱為key的hash中field的value增加integer  hexists(key, field):名稱為key的hash中是否存在鍵為field的域  hdel(key, field):刪除名稱為key的hash中鍵為field的域  hlen(key):返回名稱為key的hash中元素個數  hkeys(key):返回名稱為key的hash中所有鍵  hvals(key):返回名稱為key的hash中所有鍵對應的value  hgetall(key):返回名稱為key的hash中所有的鍵(field)及其對應的value  

hash類型用的比較多,特別是對象存儲時候,基本上都是用hash 存儲的。

hset  hget  hmset  hmget

看到這的小夥伴,對文章有什麼建議趕緊提出來吧!這一期想寫 redis 的。從 redis 安裝到redis 簡單使用,redis主從複製,redis 持久化,哨兵模式,集群模式。由淺及深圖文講解幫助大家全面深刻的了解reidis 知識。如果大家感興趣可以持續關注。覺得好看記得分享喲❤