欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文快速搞懂Redis的幾種數(shù)據(jù)類(lèi)型方式

 更新時(shí)間:2022年10月26日 09:51:27   作者:小馬 同學(xué)  
這篇文章主要介紹了一文快速搞懂Redis的幾種數(shù)據(jù)類(lèi)型方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Redis簡(jiǎn)介

Redis 是一個(gè)開(kāi)源(BSD許可)的,內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),它可以用作數(shù)據(jù)庫(kù)、緩存和消息中間件。

它支持多種類(lèi)型的數(shù)據(jù)結(jié)構(gòu),如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 與范圍查詢(xún), bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢(xún)。

Redis 內(nèi)置了 復(fù)制(replication),LUA腳本(Lua scripting), LRU驅(qū)動(dòng)事件(LRU eviction),事務(wù)(transactions) 和不同級(jí)別的 磁盤(pán)持久化(persistence), 并通過(guò) Redis哨兵(Sentinel)和自動(dòng) 分區(qū)(Cluster)提供高可用性(high availability)。

Redis有幾種數(shù)據(jù)類(lèi)型

Redis是一個(gè)以key-value存儲(chǔ)系統(tǒng),一個(gè)Key鍵值對(duì)應(yīng)一個(gè)value值,鍵值不能重復(fù),它支持存儲(chǔ)的value類(lèi)型有5種。 

Redis支持五種數(shù)據(jù)類(lèi)型:

  • String(字符串)
  • List(列表)
  • Set(集合)
  • Hash(哈希)
  • Zset(sorted set:有序集合)

Redis的基本指令

在講數(shù)據(jù)類(lèi)型前先來(lái)看一下Redis的基本指令,主要是針對(duì)Key鍵值和的一些操作。

Redis默認(rèn)16個(gè)數(shù)據(jù)庫(kù),類(lèi)似數(shù)組下標(biāo)從0開(kāi)始,初始默認(rèn)使用0號(hào)庫(kù)

可以通過(guò)以下指令來(lái)修改默認(rèn)存放的數(shù)據(jù)庫(kù)

select   <dbid>        如: select 1 

Redis針對(duì)Key鍵值的一些基本操作。

keys * 			查詢(xún)當(dāng)前庫(kù)的所有鍵,返回鍵值
exists  <key>     	判斷某個(gè)鍵是否存在,返回0或1
type  <key>			查看鍵的類(lèi)型
del  <key>			刪除某個(gè)鍵
expire   <key>   <seconds>		為鍵值設(shè)置過(guò)期時(shí)間,單位秒
ttl   <key>			查看還有多少秒過(guò)期,-1表示永不過(guò)期,-2表示已過(guò)期
dbsize					查看當(dāng)前數(shù)據(jù)庫(kù)的key的數(shù)量

Demo樣例,初始Redis中有a,b兩個(gè)鍵。

清空Redis庫(kù)的兩個(gè)指令

Flushdb		清空當(dāng)前庫(kù)
Flushall		清空全部庫(kù)

String(字符串)

  • String是Redis最基本的類(lèi)型,你可以理解成與Memcached一模一樣的類(lèi)型,一個(gè)key對(duì)應(yīng)一個(gè)value。
  • String類(lèi)型是二進(jìn)制安全的。意味著Redis的string可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對(duì)象 。
  • String類(lèi)型是Redis最基本的數(shù)據(jù)類(lèi)型,一個(gè)Redis中字符串value最多可以是512M

基本指令:

set   <key>  <value>		添加鍵值
get   <key>			查詢(xún)對(duì)應(yīng)的鍵值
append  <key>  <value>		將給定的<value> 追加到原鍵值的末尾
strlen  <key>			獲取鍵值的長(zhǎng)度
setnx  <key>  <value>			只有在 key 不存在時(shí)設(shè)置 key 的值
incr  <key>				將 key 中儲(chǔ)存的數(shù)字值自增1,只能對(duì)數(shù)字值操作,如果為空,新增值為1
decr  <key>				將 key 中儲(chǔ)存的數(shù)字值減1,只能對(duì)數(shù)字值操作,如果為空,新增值為-1
incrby / decrby  <key>  <步長(zhǎng)>			將 key 中儲(chǔ)存的數(shù)字值增 / 減。自定義步長(zhǎng)。

mset  <key1>  <value1>  <key2>  <value2> ....		同時(shí)設(shè)置一個(gè)或多個(gè) key-value對(duì) 
mget  <key1>   <key2>   <key3> .....					同時(shí)獲取一個(gè)或多個(gè) value
msetnx <key1>  <value1>  <key2>  <value2>  .....		同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對(duì),當(dāng)且僅當(dāng)所有給定 key 都不存在。
getrange  <key>  <起始位置>  <結(jié)束位置>			獲得值的范圍,類(lèi)似java中的substring
setrange  <key>   <起始位置>   <value>				用 <value>  覆寫(xiě)<key> 所儲(chǔ)存的字符串值,從<起始位置>開(kāi)始。
setex  <key>  <過(guò)期時(shí)間>   <value>					設(shè)置鍵值的同時(shí),設(shè)置過(guò)期時(shí)間,單位秒。
getset <key>  <value>											以新?lián)Q舊,設(shè)置了新值同時(shí)獲得舊值。

Demo樣例

List(列表)

Redis 列表是簡(jiǎn)單的字符串列表,按照插入順序排序。你可以添加一個(gè)元素導(dǎo)列表的頭部(左邊)或者尾部(右邊)。

它的底層實(shí)際是個(gè)雙向鏈表,對(duì)兩端的操作性能很高,通過(guò)索引下標(biāo)的操作中間的節(jié)點(diǎn)性能會(huì)較差。

基本指令:

lpush/rpush  <key>  <value1>  <value2>  <value3> ....			從左邊/右邊插入一個(gè)或多個(gè)值。
lpop/rpop  <key> 				從左邊/右邊吐出一個(gè)值并刪除。值在鍵在,值亡鍵亡。
rpoplpush  <key1>  <key2> 		從<key1>列表右邊吐出一個(gè)值,插到<key2>列表左邊。
lrange <key> <start> <stop>		按照索引下標(biāo)獲得元素(從左到右)
lindex <key> <index>					按照索引下標(biāo)獲得元素(從左到右)
llen <key>			獲得列表長(zhǎng)度 
linsert <key>  before <value>  <newvalue>	在<value>的前面插入<newvalue> 插入值
lrem <key> <n>  <value>		從左邊刪除n個(gè)value(從左到右)

Demo樣式

**加粗樣式**

Set(集合)

Redis set對(duì)外提供的功能與list類(lèi)似是一個(gè)列表的功能,特殊之處在于set是可以自動(dòng)排重的,當(dāng)你需要存儲(chǔ)一個(gè)列表數(shù)據(jù),又不希望出現(xiàn)重復(fù)數(shù)據(jù)時(shí),set是一個(gè)很好的選擇,并且set提供了判斷某個(gè)成員是否在一個(gè)set集合內(nèi)的重要接口,這個(gè)也是list所不能提供的。

Redis的Set是string類(lèi)型的無(wú)序集合。它底層其實(shí)是一個(gè)value為null的hash表,所以添加,刪除,查找的復(fù)雜度都是O(1)。

基本指令:

sadd <key>  <value1>  <value2> .....   		將一個(gè)或多個(gè) value元素加入到集合 key 當(dāng)中,已經(jīng)存在于集合的 value 元素將被忽略。
smembers <key>		取出該集合的所有值。
sismember <key>  <value>			判斷集合<key>是否為含有該<value>值,有返回1,沒(méi)有返回0
scard   <key>		返回該集合的元素個(gè)數(shù)。
srem <key> <value1> <value2> ....			刪除集合中的某個(gè)元素。
spop <key>		隨機(jī)從該集合中吐出一個(gè)值并刪除。
srandmember <key> <n>		隨機(jī)從該集合中取出n個(gè)值。不會(huì)從集合中刪除
sinter <key1> <key2>		返回兩個(gè)集合的交集元素。
sunion <key1> <key2>  	返回兩個(gè)集合的并集元素。
sdiff <key1> <key2>		返回兩個(gè)集合的差集元素。

Demo樣式

Hash(哈希)

  • Redis hash 是一個(gè)鍵值對(duì)集合。
  • Redis hash是一個(gè)string類(lèi)型的field和value的映射表,hash特別適合用于存儲(chǔ)對(duì)象。
  • 類(lèi)似Java里面的Map<String,String>

基本指令:

hset <key>  <field>  <value>		設(shè)置<key>集合中指定字段的值
hget <key>  <field>		從<key>集合取出字段的value
hmset <key>  <field1> <value1> <field2> <value2>...		批量設(shè)置hash的值
hexists key  <field>		查看哈希表 key 中,給定域 field 是否存在。
hkeys <key>		列出該hash集合的所有field
hvals <key>			列出該hash集合的所有value
hincrby <key> <field>  <increment>	將該對(duì)象中指定域的值增加給定的value,原子自增操作,只能是integer的屬性值可以使用
hsetnx <key>  <field> <value>		將哈希表 key 中的域 field 的值設(shè)置為 value ,當(dāng)且僅當(dāng)域 field 不存在 .

Demo樣式

Zset(sorted set:有序集合)

Redis有序集合zset與普通集合set非常相似,是一個(gè)沒(méi)有重復(fù)元素的字符串集合。不同之處是有序集合的每個(gè)成員都關(guān)聯(lián)了一個(gè)評(píng)分(score) ,這個(gè)評(píng)分(score)被用來(lái)按照從最低分到最高分的方式排序集合中的成員。集合的成員是唯一的,但是評(píng)分可以是重復(fù)了 。

因?yàn)樵厥怯行虻? 所以你也可以很快的根據(jù)評(píng)分(score)或者次序(position)來(lái)獲取一個(gè)范圍的元素。訪問(wèn)有序集合的中間元素也是非??斓?因此你能夠使用有序集合作為一個(gè)沒(méi)有重復(fù)成員的智能列表。

基本指令:

zadd  <key> <score1> <value1>  <score2> <value2>...		將一個(gè)或多個(gè) value元素及其 score 值加入到有序集 key 當(dāng)中。
zrange <key>  <start> <stop>  [WITHSCORES]  		返回有序集 key 中,下標(biāo)在<start> <stop>之間的元素,帶WITHSCORES,可以讓分?jǐn)?shù)一起和值返回到結(jié)果集。
zrangebyscore key min max [withscores] [limit offset count]		返回有序集 key 中,所有 score 值介于 min 和 max 之間(包括等于 min 或 max )的成員。有序集成員按 score 值遞增(從小到大)次序排列。 
zrevrangebyscore key max min [withscores] [limit offset count]		同上,改為從大到小排列。 
zincrby <key> <increment> <value>		為元素的score加上增量
zrem  <key>  <value>  		刪除該集合下,指定值的元素 
zcount <key>  <min>  <max> 		統(tǒng)計(jì)該集合,分?jǐn)?shù)區(qū)間內(nèi)的元素個(gè)數(shù) 
zrank <key>  <value> 			返回該值在集合中的排名,從0開(kāi)始。

Demo樣式

RedisDesktopManager數(shù)據(jù)查看工具

RedisDesktopManager是一款開(kāi)源的Redis數(shù)據(jù)庫(kù)管理應(yīng)用程序。

下載完成后,安裝就直接點(diǎn)下一步即可

安裝完成后創(chuàng)建連接后就可以使用了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis實(shí)現(xiàn)接口防抖的示例代碼

    Redis實(shí)現(xiàn)接口防抖的示例代碼

    本文介紹了一種通過(guò)AOP、自定義注解和Redis實(shí)現(xiàn)的接口防抖技術(shù),這種方法能有效避免因網(wǎng)絡(luò)波動(dòng)等原因短時(shí)間內(nèi)發(fā)送多個(gè)請(qǐng)求導(dǎo)致的數(shù)據(jù)重復(fù)添加問(wèn)題,感興趣的可以了解一下
    2024-10-10
  • redis中opsForList().range()的使用方法詳解

    redis中opsForList().range()的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于redis中opsForList().range()的使用方法,文中通過(guò)實(shí)例代碼以及圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Windows下Redis安裝配置簡(jiǎn)單教程

    Windows下Redis安裝配置簡(jiǎn)單教程

    這篇文章主要為大家詳細(xì)介紹了Windows下Redis安裝配置簡(jiǎn)單教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Redis教程(六):Sorted-Sets數(shù)據(jù)類(lèi)型

    Redis教程(六):Sorted-Sets數(shù)據(jù)類(lèi)型

    這篇文章主要介紹了Redis教程(六):Sorted-Sets數(shù)據(jù)類(lèi)型,本文講解了Sorted-Sets數(shù)據(jù)類(lèi)型概述、相關(guān)命令列表、命令使用示例、應(yīng)用范圍等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 淺談Redis的異步機(jī)制

    淺談Redis的異步機(jī)制

    命令操作、系統(tǒng)配置、關(guān)鍵機(jī)制、硬件配置等會(huì)影響 Redis 的性能,還要提前準(zhǔn)備好應(yīng)對(duì)異常的方案,本文主要介紹了Redis的異步機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Redis list 類(lèi)型學(xué)習(xí)筆記與總結(jié)

    Redis list 類(lèi)型學(xué)習(xí)筆記與總結(jié)

    這篇文章主要介紹了Redis list 類(lèi)型學(xué)習(xí)筆記與總結(jié),本文著重講解了關(guān)于List的一些常用方法,比如lpush 方法、lrange 方法、rpush 方法、linsert 方法、 lset 方法等,需要的朋友可以參考下
    2015-06-06
  • Redis全量復(fù)制與部分復(fù)制示例詳解

    Redis全量復(fù)制與部分復(fù)制示例詳解

    這篇文章主要給大家介紹了關(guān)于Redis全量復(fù)制與部分復(fù)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis爬蟲(chóng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • redis stream 實(shí)現(xiàn)消息隊(duì)列的實(shí)踐

    redis stream 實(shí)現(xiàn)消息隊(duì)列的實(shí)踐

    本文主要介紹了redis stream 實(shí)現(xiàn)消息隊(duì)列的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 淺析Redis Sentinel 與 Redis Cluster

    淺析Redis Sentinel 與 Redis Cluster

    本文主要介紹Redis Sentinel 及 Redis Cluster的區(qū)別及用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Redis?抽獎(jiǎng)大轉(zhuǎn)盤(pán)的實(shí)戰(zhàn)示例

    Redis?抽獎(jiǎng)大轉(zhuǎn)盤(pán)的實(shí)戰(zhàn)示例

    本文主要介紹了Redis?抽獎(jiǎng)大轉(zhuǎn)盤(pán)的實(shí)戰(zhàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評(píng)論