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

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

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

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

  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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章