打好Redis的基礎,你可能需要這些常用命令
一、背景介紹
Redis 是一個開源的,先進的key-value存儲。它通常被稱為數據結構服務器,因為鍵可以包含字符串、哈希、鏈表、集合與有序集合,而且支持各種不同方式的排序,所以命令比較豐富,很容易混淆。
二、Redis 常用命令
1、工具命令
1)、redis-server
啟動redis服務進程的工具命令
- #指定配置文件啟動服務
- redis-server redis.conf
- #指定端口啟動服務
- redis-server --port 6379
2)、redis-cli
redis 客戶端工具
- #使用socket連接redis服務器
- redis-cli -s /tmp/redis.sock
- #不使用socket連接redis服務器
- redis-cli
3)、redis-benchmark
redis 的性能測試工具
- #使用默認參數測試
- redis-benchmark
- #自定義參數測試
- redis-benchmark -n 1000000 --csv
4)、redis-check-dump
redis 檢查修復本地數據文件工具
- # redis-check-dump dump.rdb
5)、redis-check-aof
redis 檢查修復AOF日志文件工具
- # redis-check-aof appendonly.aof
6)、redis-sentinel
redis 集群管理工具
2、通用命令
auth Redis認證命令,執行其他命令前,必須先進行認證(前提是在配置文件中設置了認證參數)
ping 測試客戶端和服務器之間的聯通,返回值為PONG,表示聯通
config get * 獲取所有配置參數
config set config_name config_value 設置配置參數值
info 返回服務器信息
exist 查看當前庫中是否存在某個key
ttl 獲取鍵的有效時長
expire 設置鍵的過期時間
persist key_name 移除某個鍵的過期時間
del 刪除某個鍵
select n 切換到n的數據庫,redis默認的數據庫是0-15,共16個數據庫
move key_name n 將當前庫的鍵移動到其他數據庫
type key_name 返回鍵的數據類型
dbsize 獲取當前庫中所有鍵的數量
key * 獲取當前所有key(當鍵數量多是,會hang死,慎用)
flushdb 刪除當前庫中的所有key
flushall 刪除所有庫中的所有key
save 創建當前庫的備份
bgsave 同save,但是是后臺備份,不阻塞主進程
eval 執行lua腳本
3、類型相關命令
1)、STRING
set 添加鍵值對,多次設置會覆蓋原來的值
get 獲取鍵的值
incr/decr 自增/自減(前提是鍵值是整型)
incrby/decrby 指定步長增加減少(q前提是鍵值是整型)
strlen 獲取鍵的長度
append 向指定鍵追加值,返回字符串長度
setnx 判斷鍵是否存在,存在返回0,否則返回1,不會覆蓋原來值
getrange 根據指定下標獲取鍵的值
Demo:
- 127.0.0.1:6379> get number
- "20"
- 127.0.0.1:6379> incr number
- (integer) 21
- 127.0.0.1:6379> decr number
- (integer) 20
- 127.0.0.1:6379> incrby number 5
- (integer) 25
- 127.0.0.1:6379> append number hello
- (integer) 7
- 127.0.0.1:6379> strlen number
- (integer) 7
- 127.0.0.1:6379> setnx number hello
- (integer) 0
- 127.0.0.1:6379> getrange number 0 5
- "25hell"
2)、LISTS
lpush 在列表前面添加一個或多個值
rpush 在列表后面添加一個或多個值
lrange 根據指定下標獲取列表中的元素
lpop 獲取并取出列表中的***個元素
llen 獲取列表長度
Demo:
- 127.0.0.1:6379> lpush mylists apple orange pear
- (integer) 3
- 127.0.0.1:6379> llen mylists
- (integer) 3
- 127.0.0.1:6379> lrange mylists 0 -1
- 1) "pear"
- 2) "orange"
- 3) "apple"
- 127.0.0.1:6379> rpush mylists banana
- (integer) 4
- 127.0.0.1:6379> lrange mylists 0 -1
- 1) "pear"
- 2) "orange"
- 3) "apple"
- 4) "banana"
- 127.0.0.1:6379> lpop mylists
- "pear"
- 127.0.0.1:6379> lset mylists 0 four
- OK
- 127.0.0.1:6379> lrange mylists 0 -1
- 1) "four"
- 2) "apple"
- 3) "banana"
3)、SETS
sadd 向集合中添加值
smembers 查看集合中的值
sismember 判斷某元素是否是集合中元素
sunion 返回兩個集合中的并集
sdiff 返回兩個集合中的差集(將寫在前面的集合作為參照)
sinter 返回兩個集合中的交集
scard 返回集合中元素個數
srem 刪除集合中指定值
Demo:
- 127.0.0.1:6379> sadd myset one two three
- (integer) 3
- 127.0.0.1:6379> sadd myset1 two redis mysql
- (integer) 3
- 127.0.0.1:6379> smembers myset
- 1) "three"
- 2) "two"
- 3) "one"
- 127.0.0.1:6379> smembers myset1
- 1) "two"
- 2) "mysql"
- 3) "redis"
- 127.0.0.1:6379> sdiff myset myset1
- 1) "three"
- 2) "one"
- 127.0.0.1:6379> sinter myset myset1
- 1) "two"
- 127.0.0.1:6379> sunion myset myset1
- 1) "two"
- 2) "three"
- 3) "mysql"
- 4) "one"
- 5) "redis"
- 127.0.0.1:6379> scard myset
- (integer) 3
- 127.0.0.1:6379> sismember myset redis
- (integer) 0
- 127.0.0.1:6379> srem myset two
- (integer) 1
- 127.0.0.1:6379> smembers myset
- 1) "three"
- 2) "one"
4)、SORTED SETS
zadd 將鍵插入有序集合,并指定順序
zrange 取出指定順序的元素
zscore 返回集合中的順序
zcount 返回集合中score在給定區間的數量
zrem 刪除集合中指定元素
zrank 返回名稱key中原素的排名
Demo:
- 127.0.0.1:6379> zadd sset 1 one 2 two 3 three
- (integer) 3
- 127.0.0.1:6379> zadd sset 3 three
- (integer) 0
- 127.0.0.1:6379> zrange sset 0 -1 withscores
- 1) "one"
- 2) "1"
- 3) "two"
- 4) "2"
- 5) "three"
- 6) "3"
- 127.0.0.1:6379> zrank sset one
- (integer) 0
- 127.0.0.1:6379> zrank sset two
- (integer) 1
- 127.0.0.1:6379> zcard sset
- (integer) 3
- 127.0.0.1:6379> zincrby sset 2 two
- "4"
- 127.0.0.1:6379> zrange sset 0 -1 withscores
- 1) "one"
- 2) "1"
- 3) "three"
- 4) "3"
- 5) "two"
- 6) "4"
- 127.0.0.1:6379> zrem sset three
- (integer) 1
- 127.0.0.1:6379> zrange sset 0 -1 withscores
- 1) "one"
- 2) "1"
- 3) "two"
- 4) "4"
5)、HASHES
hset 返回hash 域為指定值,如果key不存在,則先創建
hget 獲取hash 域中指定的key值
hmset 同時批量設置多個域
hincrby 指定hash 域加上給定的值
hexists 指定field是否存在,存在返回1,否則返回2
hlen 返回指定hash 表中field中的數量
Demo:
- 127.0.0.1:6379> hset user name jack
- (integer) 1
- 127.0.0.1:6379> hget user name
- "jack"
- 127.0.0.1:6379> hsetnx user name jack
- (integer) 0
- 127.0.0.1:6379> hmset user1 name bob sex man age 11
- OK
- 127.0.0.1:6379> hmget user1 name sex age
- 1) "bob"
- 2) "man"
- 3) "11"
- 127.0.0.1:6379> hexists user1 score
- (integer) 0
- 127.0.0.1:6379> hlen user1
- (integer) 3
- 127.0.0.1:6379> hincrby user1 age 5
- (integer) 16
- 127.0.0.1:6379> hkeys user1
- 1) "name"
- 2) "sex"
- 3) "age"
- 127.0.0.1:6379> hdel user1 sex
- (integer) 1
- 127.0.0.1:6379> hgetall user1
- 1) "name"
- 2) "bob"
- 3) "age"
- 4) "16"
4、其他命令
1)、事務
multi 開啟一個事務
exec 執行事務
discard 撤銷事務
watch 監視數據庫鍵,若發生改變,返回空
Demo:
- 127.0.0.1:6379> watch "csdn"
- OK
- 127.0.0.1:6379> multi
- OK
- 127.0.0.1:6379> set csdn blob
- QUEUED
- 127.0.0.1:6379> get csdn
- QUEUED
- 127.0.0.1:6379> exec
- 1) OK
- 2) "blob"
2)、復制
info replication 獲取復制信息
slaveof 建立復制關系
sync 同步
3)、訂閱發布
subscribe 訂閱一個或多個頻道
publish 向某一頻道發送信息