Redis五種資料型別常用操作

2021-09-26 13:39:58 字數 4443 閱讀 7874

**

redis預設有16個資料庫,0,1,2…15

在redis上所做的所有資料操作,都是預設在0號資料庫上操作

若要切換資料庫,則需要使用命令select + 資料庫名

資料庫和資料庫之間不能共享鍵值對

鍵值對的移植:move key 1 將當前庫的指定key移植到1號資料庫中

清空當前資料庫中的資料:flushdb

清空所有資料庫中的資料:flushall

redis資料型別:

redis使用的是鍵值對來儲存資料

key:全部是字串

value:有五種資料型別–》string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)。

通用的操作方法:

萬用字元: * 表示任意0個或多個字元,?表示任意乙個字元

keys pattern獲取所有與pattern匹配的key

keys * 查詢所有的key

dbsize 返回當前資料庫中key的數目

del key1 key2…刪除指定的key

exists key判斷該key是否存在,1表示存在,0表示不存在

rename key newkey 為當前key重新命名

expire key seconds 設定過期時間,單位:秒,如果該key過時了,redis會將其刪除

ttl key 獲取該key所剩的超時時間,如果沒有設定超時,返回-1。如果返回-2表示超時不存在

type key獲取指定key的型別,如果key不存在則返回none

quit 退出客戶端

info 檢視redis的一些資訊

string型別的操作方法:hash型別的操作方法:

redis中的hash型別可以看成具有key,value的map容器。所以該型別非常適合儲存值物件的資訊

hash–> key–> user value–>

hash特點:占用的磁碟空間極少

賦值:hset key field value 為指定的key設定field/value(鍵值對)

hmset key field value[field2 vlaue2…] 設定key中的多個field/value(鍵值對)

取值:hget key field 得到指定key中指定field的值

hmget key field[field2…] 得到指定key中多個field對應的value值

hgetall key 得到key中所有的field-value

刪除:hdel key field (若該hash中已經不存在field-value,則鍵值對會被**)

del key

擴充套件:自增:hincrby key field increment(操作的資料只能是數字)

判斷指定的key中的field是否存在:hexists key field

獲取key所包含的field數量:hlen key

獲得所有的字段:hkeys key

獲得所有的字段值:hvals key

list的操作方法:

redis選擇了雙向鍊錶作為list底層的資料結構,因為redis操作中最多的操作是進行元素的增刪

檢視列表:lrange key start end獲取鍊錶中從start到end元素的值,start,end從0開始計數;也可為負數,-1則表示鍊錶尾部的元素

lrange key 0 -1 檢視鍊錶中所有元素

賦值: 從左邊開始插入資料–》lpush key value[value2…]

從右邊開始插入資料–》rpush key value[value2…]

刪除:lpop key返回並彈出指定key關聯鍊錶的第乙個元素,即頭部元素。如果該key不存在,返回nil

rpop key從尾部彈出元素

擴充套件:llen key: 返回指定的key關聯的鍊錶中的元素的數量

lrem key count value: 刪除count個值為value的元素,若count=0,則刪除該鍊錶中所有值為value的元素(效率極為低下)

lset key index value: 通過索引替換元素(賦索引操作,效率不高)

linsert key before|after pivot value :在pivot元素前或者後插入value這個元素(賦索引操作,效率不高)

rpoplpush resource destination: 將鍊錶中的尾部元素彈出並新增到頭部【迴圈操作】可以自我迴圈,也可以兩個鍊錶之間迴圈

set型別的操作方法:

set中元素不會重複,並且不能保證順序

賦值:sadd key value[value…] 向set中新增元素

取值:smembers key 獲取set中所有的元素

sismember key member 判斷set中是否存在該元素

刪值:srem key member[member…] 刪除元素

差集運算:sdiff key1 key2…

交集運算:sinter key1 key2…

並集運算:sunion key1 key2…

擴充套件:scard key: 獲取set中成員的數量

srandmember key: 隨機返回set中乙個成員

sdiffstore destination key1 key2… 將key1,key2返回的差集儲存在destination中

sinterstore destination key1 key2… 將key1,key2返回的交集儲存在destination中

sunionstore destination key1 key2… 將key1,key2返回的並儲存在destination中

zset(有序set)型別的操作方法:

專門用來做排行榜!!

賦值:zadd key score member [score member…](將所有成員及該成員的分數存放到zset中

如果該元素已經存在則會用新的分數替換原有的分數。返回值是新加入到集合的元素個數,不包含之前已經存在的元素)

檢視:zsocre key member : 返回指定成員的分數

zcard key : 獲取集合中的成員數量

刪除:zrem key member[member…] 移除集合中指定的成員,可以指定多個成員

zremrangebyrank key start stop 按照排名範圍刪除元素

zremrangebyscore key min max 按照分數範圍來刪除元素

範圍查詢:zrange key 0 -1 查詢所有元素

zrange key start end[withscores] 分數由小到大排列

zrevrange key start end[withscores] 分數由大到小排列

zrangebyscore key min max[withscores] [limit offset count] 返回分數在【min,max】的成員並按照分數從低到高排序

擴充套件:zincrby key increment member : 設定指定成員的增加的分數,返回值為增加後的分數

zcount key min max: 獲取分數在【min,max】之間的成員

zrank key member: 返回成員在集合中的排名的索引(從小到大,索引從0開始)

arevrank key member: 返回成員在集合的排名的索引(從大到小,索引從0開始)

redis的其它特性:

訊息訂閱與發布

subscribe channel 訂閱頻道,例:subscribe mychat,訂閱mychat這個頻道

psubscribe channel* 批量訂閱頻道 ,例:psubscribe s*,訂閱以「s」開頭的頻道

publish channel content 在指定的頻道中發布訊息,如publish mychat 『today is a newday』

Redis 五種資料型別

一 前言 上篇部落格已經對redis的一些基本知識做了一些簡介,這篇部落格,將簡單介紹一些redis的五種資料型別。分別為string 字串 hash 雜湊 list 鍊錶 set 集合 zset 有序集合 對這些型別可以執行很多原子性的操作 比如向乙個string型別的value後面追加字串 向l...

Redis 五種資料型別

目錄 redis共有strings hashs lists sets sorted sets五種資料型別,可以說已經比較豐富了。下面只對這幾種資料型別的資料結構與用途做簡要介紹。至於每種資料型別的操作api,這裡只簡單一提,不再一一詳細介紹,有需要的使用者可以google即可。string是最簡單的...

Redis 五種資料型別

redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 資料型別一 字串 0.1 6379 set name hubotao2 ok127.0 0.1 6379 get name hubotao2 資料型別二 hash...