Redis系列:項目中哪些常用的命令

點擊上方「藍字」關注我們

目前無論項目大小幾乎都要是使用到Redis,今天梳理一下在使用Redis會用戶的一些重要的相關命令。
1、啟動和關閉Redis
啟動和關閉無疑是開啟Redis的首要命令,連服務器都不知道啟動和關閉何談使用呢?
啟動
/usr/local/redis/bin/redis-server?/usr/local/redis/etc/redis.conf?

關閉
pkill?redis
或者
kill?進程號
2、客戶端連接Redis服務器
使用Reids自帶客戶端
# 默認連接 127.0.0.1和6379端口/usr/local/redis/bin/redis-cli?# 指定ip和端口?/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379

如果沒有Reids自帶客戶端,使用telnet命令
telnet?127.0.0.1?6379

3、查看Redis服務器信息
要看出Redis的服務器信息可以通過info命令查看,先通過客戶端連接上Redis服務器,然后使用info命令

4、登錄連接時輸入密碼
Redis服務器一般設置了密碼,設置密碼時需要修改redis.conf配置文件
vi?/usr/local/redis/etc/redis.conf

修改后,重啟redis-server服務器。
客戶端連接,使用命令auth,輸入密碼

使用telnet命令也可以使用telnet也可使用auth命令

通過命令行也可以設置Redis的密碼
config?set?requirepass?new2020
一旦設置密碼,必須先驗證通過密碼,否則所有操作不可用
客戶端使用config get requirepass命令查看密碼
config?get?requirepass
5、獲取所有的鍵key
獲取Redis服務器的所有鍵,使用如下命令
keys?pattern

不過該命令在生產(chǎn)環(huán)境一定不要使用,使用的話會造成服務器假死
6、獲取鍵總數(shù)
dbsize

7、查詢鍵是否存在

查詢查詢多個,返回存在的個數(shù)
8、查詢鍵類型
type?鍵
1.基于內存的key-value數(shù)據(jù)庫
2.基于c語言編寫的,可以支持多種語言的api?//set每秒11萬次,取get?81000次
3.支持數(shù)據(jù)持久化
4.value可以是string,hash,?list,?set,?sorted?set
使用場景
1.?去最新n個數(shù)據(jù)的操作
2.?排行榜,取top?n個數(shù)據(jù)?//最佳人氣前10條
3.?精確的設置過期時間
4.?計數(shù)器
5.?實時系統(tǒng),?反垃圾系統(tǒng)
6.?pub,?sub發(fā)布訂閱構建實時消息系統(tǒng)
7.?構建消息隊列
8.?緩存
???? Redis在互聯(lián)網(wǎng)公司一般有以下應用:
?????String:緩存、限流、計數(shù)器、分布式鎖、分布式Session
?????Hash:存儲用戶信息、用戶主頁訪問量、組合查詢
?????List:微博關注人時間軸列表、簡單列隊
?????Set:贊、踩、標簽、好友關系
???? Zset:排行榜
cmd訪問redis
redis-cli.exe?-h?127.0.0.1?-p?6379
key
????keys?*?獲取所有的key
????select?0?選擇第一個庫
????move?myString?1?將當前的數(shù)據(jù)庫key移動到某個數(shù)據(jù)庫,目標庫有,則不能移動
????flush?db??????清除指定庫
????randomkey?????隨機key
????type?key??????類型
????set?key1?value1?設置key
????get?key1????獲取key
????mset?key1?value1?key2?value2?key3?value3
????mget?key1?key2?key3
????del?key1???刪除key
????exists?key??????判斷是否存在key
????expire?key?10???10過期
????pexpire?key?1000?毫秒
????persist?key?????刪除過期時間
string
????set?name?cxx
????get?name
????getrange?name?0?-1????????字符串分段
????getset?name?new_cxx???????設置值,返回舊值
????mset?key1?key2????????????批量設置
????mget?key1?key2????????????批量獲取
????setnx?key?value???????????不存在就插入(not?exists)
????setex?key?time?value??????過期時間(expire)
????setrange?key?index?value??從index開始替換value
????incr?age????????遞增
????incrby?age?10???遞增
????decr?age????????遞減
????decrby?age?10???遞減
????incrbyfloat?????增減浮點數(shù)
????append??????????追加
????strlen??????????長度
??? getbit/setbit/bitcount/bitop ???位操作
hash
????hset?myhash?name?cxx
????hget?myhash?name
????hmset?myhash?name?cxx?age?25?note?"i?am?notes"
????hmget?myhash?name?age?note???
????hgetall?myhash???????????????獲取所有的
????hexists?myhash?name??????????是否存在
????hsetnx?myhash?score?100??????設置不存在的
????hincrby?myhash?id?1??????????遞增
????hdel?myhash?name?????????????刪除
??? hkeys myhash ????????????????只取key
????hvals?myhash?????????????????只取value
????hlen?myhash??????????????????長度
list
????lpush?mylist?a?b?c??左插入
????rpush?mylist?x?y?z??右插入
????lrange?mylist?0?-1??數(shù)據(jù)集合
????lpop?mylist??彈出元素
????rpop?mylist??彈出元素
????llen?mylist??長度
????lrem?mylist?count?value??刪除
????lindex?mylist?2??????????指定索引的值
????lset?mylist?2?n??????????索引設值
????ltrim?mylist?0?4?????????刪除key
????linsert?mylist?before?a??插入
????linsert?mylist?after?a???插入
????rpoplpush?list?list2?????轉移列表的數(shù)據(jù)
set
????sadd?myset?redis?
????smembers?myset???????數(shù)據(jù)集合
????srem?myset?set1?????????刪除
????sismember?myset?set1?判斷元素是否在集合中
????scard?key_name???????個數(shù)
??? sdiff | sinter | sunion 操作:集合間運算:差集?|?交集?|?并集
????srandmember??????????隨機獲取集合中的元素
????spop?????????????????從集合中彈出一個元素
zset
????zadd?zset?1?one
????zadd?zset?2?two
????zadd?zset?3?three
????zincrby?zset?1?one??????????????增長分數(shù)
????zscore?zset?two?????????????????獲取分數(shù)
????zrange?zset?0?-1?withscores?????范圍值
????zrangebyscore?zset?10?25?withscores?指定范圍的值
????zrangebyscore?zset?10?25?withscores?limit?1?2?分頁
????Zrevrangebyscore?zset?10?25?withscores??指定范圍的值
????zcard?zset??元素數(shù)量
????Zcount?zset?獲得指定分數(shù)范圍內的元素個數(shù)
????Zrem?zset?one?two????????刪除一個或多個元素
????Zremrangebyrank?zset?0?1??按照排名范圍刪除元素
????Zremrangebyscore?zset?0?1?按照分數(shù)范圍刪除元素
????Zrank?zset?0?-1????分數(shù)最小的元素排名為0
????Zrevrank?zset?0?-1??分數(shù)最大的元素排名為0
????Zinterstore
????zunionstore?rank:last_week?7?rank:20150323?rank:20150324?rank:20150325??weights?1?1?1?1?1?1?1
排序:
????sort?mylist??排序
????sort?mylist?alpha?desc?limit?0?2?字母排序
????sort?list?by?it:*?desc???????????by命令
????sort?list?by?it:*?desc?get?it:*??get參數(shù)
????sort?list?by?it:*?desc?get?it:*?store?sorc:result??sort命令之store參數(shù):表示把sort查詢的結果集保存起來
訂閱與發(fā)布:
????訂閱頻道:subscribe chat1
????發(fā)布消息:publish chat1 "hell0?ni?hao"
????查看頻道:pubsub channels
????查看某個頻道的訂閱者數(shù)量:?pubsub?numsub?chat1
????退訂指定頻道:unsubscrible chat1 ? , punsubscribe java.*
????訂閱一組頻道:psubscribe java.*
redis事物:
?????隔離性,原子性,?
?????步驟:??開始事務,執(zhí)行命令,提交事務
?????????????multi??//開啟事務
?????????????sadd?myset?a?b?c
?????????????sadd?myset?e?f?g
?????????????lpush?mylist?aa?bb?cc
?????????????lpush?mylist?dd?ff?gg
服務器管理
????dump.rdb
????appendonly.aof
????//BgRewriteAof?異步執(zhí)行一個aop(appendOnly?file)文件重寫
????會創(chuàng)建當前一個AOF文件體積的優(yōu)化版本
????//BgSave?后臺異步保存數(shù)據(jù)到磁盤,會在當前目錄下創(chuàng)建文件dump.rdb
????//save同步保存數(shù)據(jù)到磁盤,會阻塞主進程,別的客戶端無法連接
????//client?kill?關閉客戶端連接
????//client?list?列出所有的客戶端
????//給客戶端設置一個名稱
??????client?setname?myclient1
??????client?getname
?????config?get?port
?????//configRewrite?對redis的配置文件進行改寫
rdb?save?900?1save?300?10save?60?10000
aop備份處理appendonly?yes????開啟持久化appendfsync?everysec??每秒備份一次
命令:bgsave異步保存數(shù)據(jù)到磁盤(快照保存)lastsave返回上次成功保存到磁盤的unix的時間戳shutdown同步保存到服務器并關閉redis服務器bgrewriteaof文件壓縮處理(命令)
掃碼二維碼
獲取更多精彩
Java樂園

評論
圖片
表情
