Redis通用指令和服務器配置
- Redis通用指令
- key通用操作
- key 擴展操作(時效性控制)
- key 擴展操作(查詢模式)
- 資料庫通用指令
- db 基本操作
- db 相關操作
- Redis服務器配置
- 服務器端設定
- 日志配置
- 客戶端配置
- 多服務器快捷配置
- 補充
Redis通用指令
key通用操作
- key是一個字串,通過key獲取redis中保存的資料
key應該設計哪些操作
-
對于key自身狀態的相關操作,例如:洗掉,判定存在,獲取型別等
-
對于key有效性控制相關操作,例如:有效期設定,判定是否有效,有效狀態的切換等
-
對于key快速查詢操作,例如:按指定策略查詢key
-
洗掉指定key
del key
-
獲取key是否存在
exists key
-
獲取key的型別
type key
127.0.0.1:6379> set str str
OK
127.0.0.1:6379> hset hash1 hash1 hash1
(integer) 1
127.0.0.1:6379> lpush list1 list1
(integer) 1
127.0.0.1:6379> sadd set1 set1
(integer) 1
127.0.0.1:6379> zadd zset1 1 zset1
(integer) 1
127.0.0.1:6379> type zset1
zset
127.0.0.1:6379> type str
string
127.0.0.1:6379> type hash1
hash
127.0.0.1:6379> exists str
(integer) 1
127.0.0.1:6379> exists strqwfqw
(integer) 0
127.0.0.1:6379> del zset1
(integer) 1
127.0.0.1:6379> del zset1
(integer) 0
127.0.0.1:6379> exists zset1
(integer) 0
key 擴展操作(時效性控制)
-
為指定key設定有效期
expire key seconds
pexpire key milliseconds
expireat key timestamp # 使用時間戳
pexpireat key milliseconds-timestamp -
獲取key的有效時間
ttl key
pttl key -
切換key從時效性轉換為永久性
persist key
127.0.0.1:6379> expire list1 30
(integer) 1
127.0.0.1:6379> ttl list1
(integer) 25
127.0.0.1:6379> ttl list1
(integer) 12
127.0.0.1:6379> ttl list1 # 失效的key回傳-2
(integer) -2
127.0.0.1:6379> ttl list2 # 沒有時效的key回傳-1
(integer) -1
127.0.0.1:6379> persist list2 # 對沒有設定時效性的key轉換成永久性 回傳0
(integer) 0
127.0.0.1:6379> expire list2 60
(integer) 1
127.0.0.1:6379> ttl list2
(integer) 57
127.0.0.1:6379> persist list2 # 設定時效性的key 回傳1 成功
(integer) 1
127.0.0.1:6379> ttl list2
(integer) -1
key 擴展操作(查詢模式)
- 查詢key
keys pattern
查詢模式規則
* 匹配任意數量的任意符號
? 配合一個任意符號
[] 匹配一個指定符號
keys * 查詢所有
keys it* 查詢所有以it開頭
keys *heima 查詢所有以heima結尾
keys ??heima 查詢所有前面兩個字符任意,后面以heima結尾
keys user:? 查詢所有以user:開頭,最后一個字符任意
keys u[st]er:1 查詢所有以u開頭,以er:1結尾,中間包含一個字母,s或t
127.0.0.1:6379> keys us*
1) "user:id:110:fans"
2) "user:id:120"
3) "user1"
4) "user2"
5) "user5"
6) "user:1:age"
7) "user"
8) "user:1:name"
9) "user3"
10) "user:1:gender"
11) "user4"
12) "user:id:110:views"
13) "user:id:110:likes"
127.0.0.1:6379> keys s*
1) "shop:001"
2) "s1"
3) "set1"
4) "s2"
5) "scores"
6) "sss"
7) "socres"
8) "ss"
9) "s3"
127.0.0.1:6379> keys use?
1) "user"
127.0.0.1:6379> keys s?r
1) "str"
127.0.0.1:6379> keys ????
1) "list"
2) "set1"
3) "user"
4) "logs"
5) "news"
127.0.0.1:6379> set name niu
OK
127.0.0.1:6379> set nbme zhu
OK
127.0.0.1:6379> keys n[]me
(empty array)
127.0.0.1:6379> keys n[abc]me
1) "nbme"
2) "name"
key 其他操作
-
為key改名
rename key newkey
renamenx key newkey -
對所有key排序
sort
-
其他key通用操作
help @generic
127.0.0.1:6379> rename user user100
OK
127.0.0.1:6379> get user100
"zhu"
127.0.0.1:6379> keys user*
1) "user:id:110:fans"
2) "user:id:120"
3) "user1"
4) "user2"
5) "user5"
127.0.0.1:6379> renamenx user1 user2 # 如果改的名字存在 則修改失敗
(integer) 0
127.0.0.1:6379> lpush aa 123
(integer) 1
127.0.0.1:6379> lpush aa 321
(integer) 2
127.0.0.1:6379> lpush aa 222
(integer) 3
127.0.0.1:6379> lrange aa 0 -1
1) "222"
2) "321"
3) "123"
127.0.0.1:6379> sort aa # 只排序 不動原串列
1) "123"
2) "222"
3) "321"
127.0.0.1:6379> lrange aa 0 -1
1) "222"
2) "321"
3) "123"
資料庫通用指令
key 的重復問題
- key是由程式員定義的
- redis在使用程序中,伴隨著操作資料量的增加,會出現大量的資料以及對應的key
- 資料不區分種類、類別混雜在一起,極易出現重復或沖突
解決方案
- redis為每個服務提供有16個資料庫,編號從0到15
- 每個資料庫之間的資料相互獨立
db 基本操作
-
切換資料庫
select index
-
其他操作
quit
ping
echo message
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 15
OK
127.0.0.1:6379[15]> echo abcd
"abcd"
127.0.0.1:6379[15]> ping pong # 測驗是否連接成功
"pong"
127.0.0.1:6379[15]> quit
db 相關操作
-
資料移動
move key db
-
資料清除
dbsize
flushdb
flushall
127.0.0.1:6379[1]> get name
(nil)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> move name 1
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
"niu"
如果另一個庫有相同的key 移動的話會失敗
127.0.0.1:6379[2]> set name zhu
OK
127.0.0.1:6379[2]> get name
"zhu"
127.0.0.1:6379[2]> flushdb
OK
127.0.0.1:6379[2]> get name
(nil)
127.0.0.1:6379[2]> select 1
OK
127.0.0.1:6379[1]> get name
"niu"
Redis服務器配置
服務器端設定
-
設定服務器以守護行程的方式運行
daemonize yes|no
-
系結主機地址
bind 127.0.0.1
-
設定服務器埠號
port 6379
-
設定資料庫數量
databases 16
開啟兩個redis服務
[root@maomao redis_config]# mv redis.conf redis-6379.conf
[root@maomao redis_config]# ls
redis-6379.conf
[root@maomao redis_config]# cp redis-6379.conf redis-6380.conf
[root@maomao redis_config]# vim redis-6380.conf
修改埠號和日志名稱還有dir位置
port 6380
logfile "6380.log"
dir /usr/local/redis/data
[root@maomao bin]# redis-server redis_config/redis-6379.conf
[root@maomao bin]# redis-server redis_config/redis-6380.conf
[root@maomao bin]# ps -aux |grep redis
root 1814 0.1 0.4 162456 10060 ? Ssl 09:38 0:00 redis-server 127.0.0.1:6379
root 1820 0.6 0.4 162456 10060 ? Ssl 09:38 0:00 redis-server 127.0.0.1:6380
[root@maomao bin]# redis-cli -p 6379
127.0.0.1:6379>
[root@maomao bin]# redis-cli -p 6380
127.0.0.1:6380>
查看日志
[root@maomao data]# pwd
/usr/local/redis/data
[root@maomao data]# ls
6379.log 6380.log
日志配置
-
設定服務器以指定日志記錄級別
loglevel debug|verbose|notice|warning
-
日志記錄檔案名
logfile 埠號.log
-
設定當前服務檔案保存位置,包含日志檔案,持久化檔案等
dir “/自定義路徑/redis/data”
注意:日志級別開發期設定為verbose即可,生產環境中配置為notice,簡化日志輸出量,降低寫日志IO的頻度
客戶端配置
-
設定同一時間最大客戶端連接數,默認無限制,當客戶端連接到達上限,Redis會關閉新的連接
maxclients 0
-
客戶端閑置等待最大時長,達到最大值后關閉連接,如需關閉該功能,設定為 0
timeout 300
多服務器快捷配置
- 匯入并加載指定組態檔資訊,用于快速創建redis公共配置較多的redis實體組態檔,便于維護
include /path/server-埠號.conf
補充
pidfile /var/run/redis_6379.pid # 如果以后臺的方式運行,我們就需要指定一個pid 檔案
logfile "" # 日志的檔案位置名
always-show-logo yes # 是否總是顯示logo
快照 SNAPSHOTTING
save 3600 1 # 如果3600s內 如果至少有1個key進行了修改,我們進行持久化操作
save 300 100 # 如果300s內 如果至少有100個key進行了修改,我們進行持久化操作
save 60 10000 # 如果60s內 如果至少有10000個key進行了修改,我們進行持久化操作
stop-writes-on-bgsave-error yes # 持久化如果出錯,是否還需要繼續作業
rdbcompression yes # 是否壓縮rdb檔案(持久化檔案) 需要消耗一些cpu資源
rdbchecksum yes # 保存rdb檔案的時候,進行錯誤的檢查校驗
dir ./ # rdb 檔案保存的目錄
安全 SECURITY
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> config set requirepass "123456" # 設定redis的密碼
OK
127.0.0.1:6379> auth 123456 # 使用密碼登錄
OK
127.0.0.1:6379> config get requirepass # 獲取密碼
1) "requirepass"
2) "123456"
限制 CLIENTS
maxclients 10000 # 設定能連接上redis的最大客戶端的數量
maxmemory <bytes> # redis 配置最大的記憶體容量
maxmemory-policy noeviction # 記憶體到達上限之后的處理策略
1、volatile-lru:只對設定了過期時間的key進行LRU(默認值)
2、allkeys-lru : 洗掉lru演算法的key
3、volatile-random:隨機洗掉即將過期key
4、allkeys-random:隨機洗掉
5、volatile-ttl : 洗掉即將過期的
6、noeviction : 永不過期,回傳錯誤
aof配置 APPEND ONLY 模式
appendonly no # 默認是不開啟aof模式的,默認是使用rdb方式持久化,在大部分所有的情況下,rdb完全夠用
appendfilename "appendonly.aof" # 持久化的檔案的名字
# appendfsync always # 每次修改都會 sync.消耗性能
appendfsync everysec # 每秒執行一次 sync(同步),可能會丟失這1s的資料!
# appendfsync no # 不執行 sync同步 這個時候作業系統自己同步資料,速度最快
具體的配置,我們在Redis持久化的筆記中詳細寫
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277515.html
標籤:其他
