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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis数据的类型

發布時間:2023/12/13 数据库 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis数据的类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis一共分為五種基本數據類型:String、Hash、List、Set、Zset.

string

  • 內部編碼有三種,raw,embstr,int ?
  • String 是二進制的。可以存儲序列化對象,圖片,字符串,數值等 ?
  • set和get方法 :設置值 set key value;取值 get key ;刪除值 del key ?
  • setnx(not exists):name 如果不存在進行設置,存在就不需要進行設置了,返回0 ?
  • setex(expired)/psetex(毫秒單位)? :set key 10 value 設置key有效期為10秒,10秒后返回nil ?
  • setrange? :setrange key index value (index 表示從第幾位開始替換)
  • 使用一次性設置多個和獲取多個值的mset、mget方法:mset key1 value1 key2 value2 key3 value3 ;mget key1 key2 key3 ;msetnx
  • 一次性設置和取值的getset方法 :set key value ;getset key value1,這個getset key value1返回的是value,使用get vakue得到value1的值
  • incr和decr方法:對某一個值進行遞增和遞減
  • incrby和decrby方法:對某個值進行指定長度的遞增和遞減
  • append [name]方法:字符串追加方法
  • strlen [name]方法:獲取字符串的長度

HASH

  • Hash類型是String類型的field和value的映射表,或者說一個String集合。它的特別適合存儲對象,相比較而言,將一個對象類型存儲在Hash類型里要比存儲在String類型里占用更少的內存空間,并方便存取整個對象。
  • 形如:hset key field value(含義是 hset是hash集合, key是集合名字 field是字段名 value為其值)使用hget ?key field 獲取內容,也可以存儲多個值
  • hmset可以進行批量存儲多個鍵值對:hmset key field1 value1 field2 value2,也可使用hmget進行批量獲取多個鍵值對。
  • 同樣也有hsetnx,和setnx大同小異,不存在則賦值,存在不修改
  • hincrby集合遞增。
  • hexists 是否存在key 如果存在返回,不存在返回0
  • hlen 返回hash集合里的所有的鍵數值
  • hdel 刪除指定hash的field
  • hkeys 返回hash里所有的字段
  • hvals 返回hash的所有value
  • hgetall 返回hash里所有的key和value

LIST

  • List類型是一個鏈表結構的集合,其主要功能有push、pop、獲取元素等。更詳細的說,List類型是一個雙向鏈表的結構,我們可以通過相關操作進行集合的頭部或者尾部添加刪除元素,list的設計非常簡單精巧,即可以做為棧,又可以作為隊列
  • lpush方法: 從頭部加入元素(棧) 先進后出: lpush key1 value ;lrange list1 0 -1表示從頭取到末尾
  • rpush方法:從尾部加入元素(隊列) 先進先出: rpush key2 ?value rpush list2 ?value2 lrange key2 0 -1
  • linsert方法:插入元素 Linsert keys before [element] [newelement]
  • LSET key index value 設置 index 位置的list元素的值為 value
  • LREM key count value 從存于 key 的列表里移除前 count 次出現的值為 value 的元素。 這個 count 參數通過下面幾種方式影響這個操作
  • count > 0: 從頭往尾移除值為 value 的元素
  • count < 0: 從尾往頭移除值為 value 的元素
  • count = 0: 移除所有值為 value 的元素
  • LTRIM key start stop 修剪(trim)一個已存在的 list,這樣 list 就會只包含指定范圍的指定元素。start 和 stop 都是由0開始計數的, 這里的 0 是列表里的第一個元素(表頭),1 是第二個元素,以此類推。
  • LPOP key 移除并且返回 key 對應的 list 的第一個元素
  • RPOP key 移除并返回存于 key 的 list 的最后一個元素
  • RPOPLPUSH source destination 原子性地返回并移除存儲在 source 的列表的最后一個元素(列表尾部元素), 并把該元素放入存儲在 destination 的列表的第一個元素位置(列表頭部)
  • LINDEX key index 返回名稱為key的list中 index位置的元素
  • LLEN key 返回存儲在 key 里的list的長度

SET

  • set集合是string類型的無序集合 ,set是通過intset或者hashtable實現的,對集合我們可以取交集、并集、差集
  • 內部編碼有 intset(元素類型是int類型的且元素的個數小于512字節)和hashtable(元素中有非int類型或者個數大于512字節)
  • SADD key member [member ...] 添加一個或多個指定的member元素到集合的 key中, set集合不允許重復元素 smembers查看set集合的元素
  • SREM key member [member ...] 在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素則忽略 如果key集合不存在則被視為一個空的集合,該命令返回0
  • SPOP key [count]隨機返回刪除的key
  • SDIFF key [key ...] 返回一個集合與給定集合的差集的元素.
  • SDIFFSTORE destination key [key ...] 該命令類似于 SDIFF, 不同之處在于該命令不返回結果集,而是將結果存放在destination集合中.如果destination已經存在, 則將其覆蓋重寫
  • SINTER key [key ...] 返回指定所有的集合的成員的交集.
  • SINTERSTORE destination key [key ...] 這個命令與SINTER命令類似, 但是它并不是直接返回結果集,而是將結果保存在 destination集合中.
  • SUNION key [key ...] 返回給定的多個集合的并集中的所有成員.
  • SUNIONSTORE destination key [key ...] 該命令作用類似于SUNION命令,不同的是它并不返回結果集,而是將結果存儲在destination集合中.
  • SMOVE source destination member 將member從source集合移動到destination集合中. 對于其他的客戶端,在特定的時間元素將會作為source或者destination集合的成員出現
  • SCARD key 集合元素的數量,SRANDMEMBER key [count]隨機返回一元素
  • SISMEMBER key member 返回成員 member 是否是存儲的集合 key的成員
  • 有序集合有兩種內部編碼方式:ziplist和skiplist

ZSET

  • 元素個數小于128且元素值小于64使用ziplist編碼,否則使用skiplist編碼
  • ZADD key [NX|XX] [CH] [INCR] score member [score member ...] 將所有指定成員添加到鍵為key有序集合(sorted set)里面。 添加時可以指定多個分數/成員(score/member)對。 如果指定添加的成員已經是有序集合里面的成員,則會更新改成員的分數(scrore)并更新到正確的排序位置.
  • XX: 僅僅更新存在的成員,不添加新成員。
  • NX: 不更新存在的成員。只添加新成員
  • CH: 修改返回值為發生變化的成員總數,原始是返回新添加成員的總數
  • INCR: 當ZADD指定這個選項時,成員的操作就等同ZINCRBY命令,對成員的分數進行遞增操作
  • ZREM key member [member ...]刪除名稱為key的zset中的元素member
  • ZINCRBY key increment member 為有序集key的成員member的score值加上增量increment
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 返回key的有序集合中的分數在min和max之間的所有元素(包括分數等于max或者min的元素)。元素被認為是從低分到高分排序
  • ?ZREMRANGEBYRANK key start stop 移除有序集key中,指定排名(rank)區間內的所有成員。下標參數start和stop都以0為底,0處是分數最小的那個元素
  • ZRANK key member 返回有序集key中成員member的排名,從小到大。
  • ZREVRANK key member 返回有序集key中成員member的排名,其中有序集成員按score值從大到小排列。
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 找到指定區間范圍的數據進行返回
  • COUNT key min max 返回有序集key中,score值在min和max之間(默認包括score值等于min或max)的成員個數。

查看

  • 如果使用set test1 value1進行設置,使用命令object encoding test1查看編碼方式
  • 字符串39位數以內使用embstr編碼,39位以上使用raw編碼
  • list編碼方式最新的只有quicklist,原先的ziplist和linkedlist已經取消

RedisObject實例講解

?

  • 數據類型,參考上圖的數據結構
  • 編碼方式,參考上圖的內部編碼
  • 數據指針,key對應的數據存在哪個SDS對象中
  • SDS包含三部分,len表示數據的長度,free表示空閑空間,buffer存儲數據

總結

以上是生活随笔為你收集整理的Redis数据的类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。