redis學(xué)習(xí)之redis基本數(shù)據(jù)類型以及Jedis

前言:

redis有5種基本數(shù)據(jù)類型,分別是String(字符串)、Hash(字典)List(列表)、Set(集合)、Zset(有序集合),下面就分別來說一下這五種數(shù)據(jù)類型。


歡迎大家關(guān)注我的公眾號(hào) javawebkf,目前正在慢慢地將簡(jiǎn)書文章搬到公眾號(hào),以后簡(jiǎn)書和公眾號(hào)文章將同步更新,且簡(jiǎn)書上的付費(fèi)文章在公眾號(hào)上將免費(fèi)。


數(shù)據(jù)類型詳解:

1、String:

二進(jìn)制安全的數(shù)據(jù)類型,類似于Java中的Map,以key、value的形式存儲(chǔ)數(shù)據(jù)。它有如下方法:
①、set和get方法:賦值和獲取值
語法:
set key value
get key
例子:
set username tom
get username

②、del方法:刪除指定的key
語法:
del key
例子:
del username

③、setnx方法:key不存在時(shí)進(jìn)行設(shè)置,如果已有這個(gè)key就返回0
語法:
setnx key value
例子:
setnx age 22
如果有age這個(gè)key,就返回0,沒有就進(jìn)行設(shè)置

④、setex方法:設(shè)置有效期
語法:
setex key 有效期 value
例子:
setex color 10 red
設(shè)置color的有效期為10秒,10秒后color為nil

⑤、setrange方法:替換字符串
語法:
set key 從第幾位開始替換 要替換的字符
例子:
set email 12356789@qq.com setrange email 9 gg
把qq替換成gg

⑥、mset和mget方法:一次設(shè)置或獲取多個(gè)值
語法:
mset key1 value1 key2 value2
mget key1 key2

⑦、incr和decr方法:對(duì)某個(gè)值進(jìn)行遞增或遞減
語法:
incr key
decr key

⑧、incrby和decrby方法:可以設(shè)置步長的遞增和遞減
語法:
incrby key 步長
decrby key 步長

⑨、append方法:追加字符串
語法:
append key 追加的內(nèi)容

⑩、strlen方法:獲取字符串長度
語法:
strlen key

2、Hash:

占用內(nèi)存更少,方便存儲(chǔ)對(duì)象。它有如下方法:
①、hset和hget方法:
語法:
官方:hset key field value
自己理解:hset hashname key value
hget hashname key

②、hmset和hmget:批量操作
語法: hmset hashname key1 value1 key2 value2
hmget hashname key1 key2

③、hincrby和hdecrby:集合遞增和遞減
語法:
hincrby hashname key 步長
hdecrby name key 步長

④、hexists:是否存在key,存在就返回1,不存在返回0
語法:
hexists hashname key

⑤、hlen:返回集合中鍵的個(gè)數(shù)
語法:
hlen hashname

⑥、hdel:刪除指定的key
語法:
hdel hashname key

⑦、hvals:返回指定hash里的所有value
語法:
hvals hashname

⑧、hgetall:返回hash里所有的key、value
語法:
hgetall hashname

3、List:

鏈表結(jié)構(gòu)的集合,既可以做棧也可以做隊(duì)列,它有如下方法:
①、lpush方法:從頭部加入元素(棧),先進(jìn)后出
語法:
lpush key value
例子:
lpush list1 "hello"
lpush list1 "world"

②、lrange方法:取出list中的元素,從start取到end
語法:
lrange key start end
例子:
lrange list1 0 -1
表示從頭取到尾

③、rpush方法:從尾部加入元素(隊(duì)列),先進(jìn)先出
語法:
rpush key value
例子:
rpush list1 "hello"

④、linsert方法:插入元素
語法:
linsert key before value1 insertvalue
例子:
linsert list1 before "world" "hello"
表示在world前插入一個(gè)hello

⑤、lset方法:將指定下標(biāo)的元素?fù)Q掉
語法:
lset key 下標(biāo) "替換的內(nèi)容"
例子:
lset list1 0 "haha"
表示把索引為0的元素替換成haha

⑥、lrem方法:刪除若干個(gè)元素,返回刪除的個(gè)數(shù)
語法:
lrem key 刪除的個(gè)數(shù) "刪除的元素"
例子:
lrem list1 2 "b"
刪除兩個(gè)b

⑦、ltrim方法:保留指定索引范圍內(nèi)的值
語法:
ltrim key 索引1 索引2
例子:
ltrim list1 2 4
表示保留索引2到4的內(nèi)容

⑧、lpop方法:從list頭部刪除元素,并返回刪除元素
語法:
lpop key

⑨、rpop方法:從list尾部刪除元素,并返回刪除元素
語法:
rpop key

⑩、rpoplpush方法:刪除key1中最后一個(gè)元素,然后把這個(gè)元素加到key2的第一個(gè)位置(key1和key2可以相同)
語法:
rpoplpush key1 key2

①①、lindex方法:返回list中指定索引的值
語法:
lindex key 索引
例子:
lindex list1 1
返回list1中第二個(gè)元素

①②llen方法:返回list中元素個(gè)數(shù)
語法:
llen key

4、Set:

無序不重復(fù)集合,通過hashtable實(shí)現(xiàn)。有如下方法:
①、sadd方法:添加元素
語法:
官方:sadd key member
自己理解:sadd setname value
例子:
sadd set1 haha

②、srem方法:刪除set的元素
語法:
srem setname value
例子:
srem set1 haha

③、spop方法:指定一個(gè)set,隨機(jī)刪除其里面的元素并返回
語法:
spop setname
例子:
spop set1

④、sdiff方法:返回set1不同于set2的元素
語法:
sdiff setname1 setname2

⑤、sdiffstore方法:將set1不同于set2的元素存到set3中去
語法:
```sdiffstore setname1 setname2 setname3``‘

⑥、sinter方法:求set1和set2的交集
語法:
sinter setname1 setname2

⑦、sinterstore方法:把set1與set2的交集存到set3中
語法:
sinter setname1 setname2 setname3

⑧、sunIon方法:求set1與set2的并集(I是大寫的i)
語法:
sunIon setname1 setname2

⑨、sunIonstore方法:把set1與set2的并集存入set3
語法:
sunIonstore setname1 setname2 setname3

⑩、smove方法:將set1中的某個(gè)元素移動(dòng)到set2中
語法:
smove setname1 setname2 value
例子:
smove set1 set2 ee
表示將set1中的ee移動(dòng)到set2中

①①、scard方法:查看set里的元素個(gè)數(shù)
語法:
scard setname

①②、sismember方法:判斷某個(gè)元素是否為set中元素,是返回1,不是返回0
語法:
sismember setname value
例子:
sismember set1 haha
判斷haha是不是set1中的元素

①③、srandmember方法:隨機(jī)返回set中count個(gè)元素
語法:
srandmember setname count
例子:
srandmember set1 3
隨機(jī)返回set1中3個(gè)元素

5、Zset:

和set的區(qū)別就是,Zset是有序的。它有如下方法:
①、zadd方法:添加元素,如果元素存在,就更新該元素順序
語法:
zadd zsetname score value
例子:
zadd zset1 1 haha
表示添加haha這個(gè)元素,分?jǐn)?shù)是1

②、zrem方法:刪除zset中的元素
語法:
zrem zsetname value
例子:
zrem zset1 haha

③、zincrby和zdecrby方法:指定步長遞增或遞減
**語法: **
zincrby zsetname 步長 value
zdecrby zsetname 步長 value

④、zrank方法:返回某個(gè)元素的排序索引(從小到大排序)
語法:
zrank zsetname value
例子:
zrank zset1 haha
返回haha在zset1中的序號(hào)

⑤、zrevrank方法:返回排序索引(從大到小)
語法:
zrevrank zsetname value

⑥、zrangebyscore方法:查找分?jǐn)?shù)在指定區(qū)間的數(shù)據(jù)并返回
語法:
zrangebyscore zsetname score1 score2 withscores
例子:
zrangebyscore zset1 1 4 withscores
返回分?jǐn)?shù)在1到4之間的數(shù)據(jù)

⑦、zcard方法:返回zset中元素的個(gè)數(shù)
語法:
zcard zsetname

⑧、zcount方法:返回zset中指定分?jǐn)?shù)區(qū)間中元素的個(gè)數(shù)
語法:
zcount zsetname score1 score2

⑧、zremrangebyrank:根據(jù)給定的索引區(qū)間刪除數(shù)據(jù)
語法:
zremrangebyrank zsetname index1 index2

⑨、zremrangebyscore:根據(jù)給定的分?jǐn)?shù)區(qū)間刪除元素
語法:
zremrangebyscore zsetname score1 score2

Jedis

Jedis就是Java操作redis的一套API,所有方法都和上面介紹的數(shù)據(jù)類型方法一樣,只需要new一個(gè)Jedis實(shí)例,傳入redis所在的機(jī)器的ip以及redis服務(wù)的端口,然后用這個(gè)實(shí)例調(diào)方法即可。

總結(jié):

redis有以上5大數(shù)據(jù)類型,每個(gè)類型都有若干的方法,學(xué)習(xí)時(shí)可以類比Java的集合進(jìn)行學(xué)習(xí)。

以上內(nèi)容屬于個(gè)人學(xué)習(xí)筆記整理,如果錯(cuò)誤,歡迎批評(píng)指正!

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

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