日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

redis种类型对应java类型_Redis的五种基本数据类型介绍

發(fā)布時間:2023/12/2 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis种类型对应java类型_Redis的五种基本数据类型介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Redis作為緩存具有極其豐富的功能,比如計數(shù)器、好友關(guān)系以及排行榜等等。而Redis之所能夠?qū)崿F(xiàn)如此強(qiáng)大的功能,完全是依賴著它的基本數(shù)據(jù)結(jié)構(gòu)。今天我們來看看Redis的五種基本的數(shù)據(jù)結(jié)構(gòu),分別是字符串(strings), 散列(hashes), 列表(lists), 集合(sets)以及有序集合(zset)。

1、字符串(strings)

絕大部分編程語言中都少不了的基本數(shù)據(jù)類型就是字符串(strings),數(shù)據(jù)庫Redis也不例外。下面我們來看一下關(guān)于字符串的基本操作:

set key value設(shè)置值

get key獲取某個key的值

mset key1 value1 key2 value2批量設(shè)置并且是原子的,可以用來減少網(wǎng)絡(luò)時間消耗

mget key1 key2批量獲取并且是原子的,可以用來減少網(wǎng)絡(luò)時間消耗

incr key自增指定key的值

decr key自減指定key的值

incrby key value自增指定數(shù)值

decrby key value自減指定數(shù)值

incrbyfloat key floatvalue增加指定浮點數(shù),前面幾個操作就可以用來實現(xiàn)計數(shù)器的功能。

setnx key value如果不存在該key則可以設(shè)置成功,否則會失敗,加上過期時間限制,則是redis實現(xiàn)分布式鎖的一種方式(后面會提到)。

set key value xx與前面相反,如果存在則設(shè)置成功,否則失敗(相當(dāng)于更新操作)

2、散列(hashes)

我們可以把hash理解為小型Redis,Redis在底層實現(xiàn)上和Java中的HashMap差不多,都是使用數(shù)組+鏈表的二維結(jié)構(gòu)實現(xiàn)的。不一樣的是,在Redis中字典的值只能是字符串,而且他們rehash的方式也不同,在Redis中使用的是漸進(jìn)式rehash。

hset key field value設(shè)置字典中某個key的值

hsetnx key field value設(shè)置字典中某個key的值(不存在的)

hmset key field1 value1 field2 value2… 批量設(shè)置

hget key field獲取字典中某個key的值

hmget key field1 field2批量獲取

hgetall key獲取全部

hdel key field刪除某個key

hexists key field判斷是否存在

hlen key獲取指定key對應(yīng)的字典中的存儲個數(shù)

hvals key返回所有的value

hkeys key返回所有的key

hincrby key field increValue增加某個value的值(也可以增加負(fù)數(shù))

hincrbyfloat key field floatValue增加某個value的值(浮點數(shù))

3、列表(lists)

Redis中的列表相當(dāng)于Java中的LinkedList,也就是底層是通過鏈表來實現(xiàn)的,所以對于list來說插入刪除操作很快,但索引定位非常慢。Redis提供了許多對于list的操作,如出入等操作,你可以充分利用它們來實現(xiàn)一個?;蛘哧犃?。

lpush key item1 item2 item3… 從左入棧

rpush key item1 item2 item3… 從右入棧

lpop key從左出棧

rpop key從右出棧

lindex key index獲取指定索引的元素O(n)謹(jǐn)慎使用

lrange key start end獲取指定范圍的元素O(n)謹(jǐn)慎使用

linsert key before|after item newitem在指定元素的前面或者后面添加新元素

lrem key count value刪除指定個數(shù)值為value的元素

count = 0 :刪除所有值為value的元素

count > 0 :從左到右刪除count個值為value的元素

count < 0 :從右到做刪除|count|個值為value的元素

ltrim key start end保留指定范圍的元素

lset key index newValue更新某個索引的值

blpop key timeout沒有則阻塞(timeout指定阻塞時間 為0代表永久)

brpop key timeout沒有則阻塞(timeout指定阻塞時間 為0代表永久)這兩個可以用來實現(xiàn)消費者生產(chǎn)者

4、集合(sets)

Redis中的set相當(dāng)于Java中的HashSet(無序集合),其中里面的元素不可以重復(fù),我們可以利用它實現(xiàn)一些去重的功能。我們還有對幾個集合進(jìn)行取交集,取并集等操作,這些操作就可以獲取不同用戶之間的共同好友、共同愛好等等。

sadd key value添加元素

sdel key value刪除某個元素

sismember key value判斷是否是集合中的元素

srandmember key count隨機(jī)獲取指定個數(shù)的元素(不會影響集合結(jié)構(gòu))

spop key count從集合中隨機(jī)彈出元素(會破壞結(jié)合結(jié)構(gòu))

smembers key獲取集合所有元素O(n)復(fù)雜度

scard key獲取集合個數(shù)

sinter set1 set2… 獲取所有集合中的交集

sdiff set1 set2… 獲取所有集合中的差集

sunion set1 set2… 獲取所有集合中的并集

5、有序集合(zset)

Redis中的zset是一個有序集合,通過它可以實現(xiàn)很多有意思的功能,比如學(xué)生成績排行榜,視頻播放量排行榜等等。zset中是使用 跳表 來實現(xiàn)的,我們知道只有數(shù)組這種連續(xù)的空間才能使用二分查找進(jìn)行快速的定位,而鏈表是不可以的。跳表幫助鏈表查找的時候節(jié)省了很多時間(使用跳的方式來遍歷索引來進(jìn)行有序插入)。

以上就是Redis的五種基本數(shù)據(jù)類型介紹,大家都看懂了嗎?如果想學(xué)習(xí)更多關(guān)于Redis的內(nèi)容,可以閱讀以往的相關(guān)資訊,博學(xué)谷更有海量的在線學(xué)習(xí)視頻等著你~

總結(jié)

以上是生活随笔為你收集整理的redis种类型对应java类型_Redis的五种基本数据类型介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。