Redis簡易教程(二)- 數(shù)據(jù)類型與常用命令

一、數(shù)據(jù)類型

1.有哪些類型

Redis是Key-Value型數(shù)據(jù)庫,Key只有一種類型,字符串。Value的數(shù)據(jù)類型比較豐富,考慮來應(yīng)用場合和使用場景,高效利用內(nèi)存等因素,總共設(shè)計(jì)了5種類型:string, hash, list, set和zset。

2.string類型

string可以存儲任何數(shù)據(jù),一條string的記錄最大1G。
常用操作:
(1)set key value
設(shè)置key對應(yīng)string類型的value,返回1表示成功,返回0表示失敗。
如果key不存在,則插入一條新的記錄,如果key存在則更新此記錄。
(2)setnx key value
與set基本功能相同,區(qū)別在于如果key存在,則不會執(zhí)行命令。
(3)mset key1 value1 key2 value2 ...
批量設(shè)置多個key的string類型的value,只要其中任何一個key value設(shè)置成功就返回1,全部執(zhí)行不成功則返回0。
(4)msetnx key1 value1 key2 value2 ...
與mset基本功能相同,區(qū)別在于如果批量操作中某些key已經(jīng)存在,則不會更新這些key對應(yīng)的value。
(5)get key
獲取key對應(yīng)的string類型的value,如果key不存在返回nil。
(6)mget key1 key2 ...
批量獲取
(7)getset key value
先獲取值再進(jìn)行更新。如果key不存在返回nil。
(8)incr key
對key對應(yīng)的value進(jìn)行自增操作,key對應(yīng)的value必須是一個整數(shù),如果key不存在,則設(shè)置key值為1。
(9)incrby key integer
對key對應(yīng)的value進(jìn)行自增integer數(shù)值
(10)decr key
對key對應(yīng)的value進(jìn)行自減操作,key對應(yīng)的value必須是一個整數(shù),如果key不存在,則設(shè)置key值為-1。
(11)decrby key integer
對key對應(yīng)的value進(jìn)行自減integer數(shù)值

3.hash類型

hash類型是由多個string類型的key value對組成的映射表。

hash類型相對多個string類型key value對存儲的優(yōu)點(diǎn):
將一個對象存儲在hash類型中占用更少的內(nèi)存(集中存儲),并且可以方便的對整個對方進(jìn)行存取。

常用操作:
(1)hset key field value
設(shè)置key對應(yīng)的hash的字段field的值value。
(2)hmset key field value field value field value ...
批量設(shè)置key對應(yīng)的hash的多個字段field的值value。
(3)hget key field
獲取key對應(yīng)的hash中指定的字段field的值
(4)hmget key field1 field2 field3 ...
批量獲取key對應(yīng)的hash中多個字段的值
(5)hkeys key
得到key對應(yīng)的hash的所有字段
(6)hvals key
得到key對應(yīng)的hash的所有value
(7)hgetall key
得到key對應(yīng)的hash的所有field和value
(8)hlen key
得到key對應(yīng)的hash的字段個數(shù)。
(9)hincrby key field integer
將指定的hash field加上指定的值 。成功返回hash field變更后的值。
(10)hexists key field
判斷key對應(yīng)的hash指定的字段是否存在。
(11)hdel key field
刪除key對應(yīng)的hash指定字段。

4.list類型

list類型是一個鏈表結(jié)構(gòu),是一個由string類型元素組成的雙向鏈表。
主要操作就是push,pop,range等。
雙向鏈表分左右,左為表頭,右為表尾,可以雙向進(jìn)行操作,快速查詢到鏈表中任一元素。
常用操作:
(1)lpush key value
在key對應(yīng)的list的頭部添加元素。
(2)rpush key value
在key對應(yīng)的list的尾部添加元素。
(3)lpop key
從list的頭部刪除并返回刪除的元素。
(4)rpop key
從list的尾部刪除并返回刪除的元素。
(5)blpop key1 key2... timeout
在timeout(超時時間,以秒為單位)時間內(nèi),從頭到尾掃描,返回對第一個非空list進(jìn)行l(wèi)pop操作的結(jié)果,并返回刪除的元素。
(6)brpop key1 key2... timeout
與blpop類似,方向不同,從尾到頭掃描。
(7)llen key
返回key對應(yīng)的list的元素個數(shù)。
(8)lrange key start end
返回指定區(qū)間內(nèi)的元素,下標(biāo)從0開始,負(fù)值表示逆向,即-1表示倒數(shù)第一個元素。
(9)ltrim key start end
截取list指定區(qū)間內(nèi)的元素。
(10)lset key index value
更新指定下標(biāo)的元素值。
(11)lrem key count value
從List的頭部(count>0時)或尾部(count<0時)開始,刪除count個等于value值的元素,返回刪除的數(shù)量,count為0時表示刪除全部等于value值的元素。

5.set類型

set是無序排重的,最大可包含2的32次方-1個元素。redis的set是通過hash table實(shí)現(xiàn)的。
set可以進(jìn)行交集、并集、差集運(yùn)算,可以應(yīng)用在求共同好友、blog的tag功能等場景。

常用操作:
(1)sadd key member
添加一個string類型的元素到key對應(yīng)的set集合中。
(2)srem key member
刪除指定元素。
(3)spop key
隨機(jī)刪除set中的一個元素,并返回這個元素。
(4)smove sourcekey distkey member
從sourcekey對應(yīng)的set中轉(zhuǎn)移member對應(yīng)的元素到diskey對應(yīng)的set中。
(5)scard key
返回set中元素的個數(shù)
(6)sismember key member
判斷member是否在set中。
(7)srandmember key
與spop類似,隨機(jī)取得一個元素,但不刪除這個元素。
(8)smembers key
得到集合中所有元素
(9)sinter key1 key2 ...
返回多個set集合的交集
(10)sinterstore distkey key1 key2 ...
返加key1 key2等多個set的交集,并存儲在distkey對應(yīng)的set中。
(12)sunion key1 key2 ...
返回多個set集合的并集
(13)sunionstore distkey key1 key2 ...
返加key1 key2等多個set的并集,并存儲在distkey對應(yīng)的set中。
(14)sdiff key1 key2 ...
返回多個set集合的差集,差集運(yùn)算有順序性,操作的key順序不同,運(yùn)算結(jié)果不同。
(15)sdiffstore distkey key1 key2 ...
返加key1 key2等多個set的差集,并存儲在distkey對應(yīng)的set中。

6.zset類型

zset即sorted set,有序集合,是在set的基礎(chǔ)上為每個元素添加一個score屬性,集合中的元素根據(jù)score大小進(jìn)行排序。任何時候,zset都是有序的。
每次添加進(jìn)一個新的元素或者集合中的元素的score發(fā)生變更時,zset會自動根據(jù)score重新排序。
常用操作:
(1)zadd key score1 member1 score2 member2...
添加元素到集合,元素如果存在,則更新對應(yīng)的score
(2)zrem key member
刪除指定元素,只刪除一個
(3)zincrby key incr member
增加對應(yīng)member的score,加完后元素會進(jìn)行移動,以保證整個集合的有序性。
(4)zremrangebyrank key min max
對排名在min與max之間的元素進(jìn)行刪除
(5)zremrangebyscore key min max
按score進(jìn)行區(qū)間刪除
(6)zrank key member
返回指定元素在集合中的排名(下標(biāo),以0開始),集合中元素是按score從小到大升序的。
(7)zrevrank key member
返回降序排名
(8)zrange key start end
返回集合中指定區(qū)間的元素(升序)
(9)zrevrange key start end
返回集合中指定區(qū)間的元素(降序)
(10)zrangebyscore key min max
返回score在min到max之間的元素
(11)zcount key min max
返回集合中score在給定區(qū)間的數(shù)量
(12)zcard key
返回集合中元素的個數(shù)
(13)zscore key element
返回集合中指定元素的分?jǐn)?shù)

二、對key進(jìn)行操作

  1. 對key常用的操作有:
    (1)exists key
    判斷指定key是否存在
    (2)del key1 key2 ...
    刪除給定key,返回刪除的數(shù)目,0表示給定key都不存在
    (3)type key
    返回給定key對應(yīng)value的數(shù)據(jù)類型
    (4)keys pattern
    返回匹配指定模式的所有key,比如 keys user* 表示返回以user開頭的所有key
    (5)randomkey
    隨機(jī)返回當(dāng)前數(shù)據(jù)庫中一個key
    (6)rename oldkey newkey
    重命名一個key,如果newkey存在,將會進(jìn)行覆蓋
    (7)renamenx oldkey newkey
    重命名一個key,如果newkey存在,則不執(zhí)行命令(不會覆蓋)
    (8)expire key seconds
    為key指定過期時間
    (9)ttl key
    返回key的剩余過期時間,以秒為單位,<0表示key不存在或者已經(jīng)過期。
    (10)select db-index
    切換數(shù)據(jù)庫
    (11)move key db-index
    將key從當(dāng)前數(shù)據(jù)庫移動到指定數(shù)據(jù)庫

三、常用管理命令

1. redis-cli交互式客戶端

運(yùn)行redis的bin目錄下的redis-cli命令,進(jìn)入交互式命令行

redis-cli -h 127.0.0.1 -p 6379 制定要連接的ip和端口號

redis-cli PING,ping redis的端口,看是否正常

redis-cli SHUTDOWN 關(guān)閉redis服務(wù)

2. 修改數(shù)據(jù)庫數(shù)量

一個redis實(shí)例默認(rèn)有16個數(shù)據(jù)庫,可以在redis的conf配置文件中進(jìn)行修改

databases 16

3.生成備份文件

關(guān)于數(shù)據(jù)持久化及備份策略,將在后面的教程中再深入探討。此處只列出幾個常用的命令:
(1)save
保存數(shù)據(jù)到硬盤dump.rdb備份文件中,會堵塞主進(jìn)程
(2)bgsave
以后臺進(jìn)程保存數(shù)據(jù)到硬盤dump.rdb備份文件,不會堵塞主進(jìn)程,常用
(3)shutdown save
安全關(guān)閉數(shù)據(jù)庫,關(guān)閉前會先執(zhí)行save備份操作。
(4)bgrewriteaof
異步執(zhí)行重寫一個AOF文件操作

4. 獲取客戶端連接

client list
可以得到連接到服務(wù)器的所有客戶端

5. 結(jié)束客戶端連接

client kill ipaddr:port
ipaddr為客戶端IP,port為客戶端端口

6. 標(biāo)記當(dāng)前連接名

client setname name
為當(dāng)前連接設(shè)置一個name,區(qū)分與其他連接

7. 獲取服務(wù)器端統(tǒng)計(jì)信息

info [section]
section參數(shù)可省略,省略表示顯示所有信息
加上對應(yīng)的section可以顯示對應(yīng)分塊的統(tǒng)計(jì)信息,比如 info cpu得到服務(wù)器cpu使用情況, info replication得到replication復(fù)制方面的信息等等。

8. 清空數(shù)據(jù)

(1)flushdb
清空當(dāng)前數(shù)據(jù)庫所有key
(2)flushall
清空所有數(shù)據(jù)庫所有key

9. 熱修改Replication角色

(1)role
查詢當(dāng)前服務(wù)器的角色
(2)slaveof masterip:port
設(shè)置本實(shí)例為masterip:port服務(wù)器的從服務(wù)器

10.熱修改配置信息

(1)config get setting
獲取當(dāng)前setting對應(yīng)的配置的信息,比如config get timeout得到當(dāng)前配置的連接超時時間
(2)config set setting value
設(shè)置當(dāng)前setting對應(yīng)的配置的信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近學(xué)習(xí)redis,記錄一下 redis官網(wǎng):redis.io 中文官網(wǎng):http://www.redis.net...
    alexpdh閱讀 1,965評論 0 1
  • 本文為筆者對在學(xué)習(xí)Redis過程中所收集資料的一個總結(jié),目的是為了以后方便回顧相關(guān)的知識,大部分為非原創(chuàng)內(nèi)容。特此...
    EakonZhao閱讀 14,631評論 0 9
  • Redis::__construct構(gòu)造函數(shù)$redis = new Redis(); connect, open...
    bycall閱讀 1,554評論 0 2
  • 代碼 Redis的操作 1、連接操作相關(guān)的命令quit:關(guān)閉連接(connection)auth:簡單密碼認(rèn)證 2...
    gogoforit閱讀 614評論 0 0
  • 查看當(dāng)前所有的KEY KEYS *KEYS zhang* #查看前綴為zhang的所有鍵; 查看當(dāng)前redis...
    Zhang21閱讀 10,503評論 0 3

友情鏈接更多精彩內(nèi)容