自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

那些你不得不知的Redis基礎(chǔ)類型常用操作、命令

運維 數(shù)據(jù)庫運維 Redis
概念:Redis是用C語言開發(fā)的一個開源的高性能鍵值對數(shù)據(jù)庫。

 概念:Redis是用C語言開發(fā)的一個開源的高性能鍵值對數(shù)據(jù)庫。

 

[[283906]]

特征:

  • 數(shù)據(jù)間沒有必然的聯(lián)系
  • 內(nèi)部采用單線程機(jī)制進(jìn)行工作
  • 高性能
  • 多數(shù)據(jù)類型支持字符串類型 String列表類型 List散列類型 Map集合類型 Set有序集合類型 SortedSet
  • 持久化支持

應(yīng)用場景

  • 為熱點數(shù)據(jù)加速查詢;如:熱點商品、熱點新聞、熱點資訊等高訪問量信息。
  • 任務(wù)隊列;如:秒殺、搶購、購票等。
  • 即時信息查詢;如:排行榜等。
  • 時效性信息控制;如:驗證碼、投票控制等。
  • 分布式數(shù)據(jù)共享;如:分布式架構(gòu)中的session等。
  • 消息隊列
  • 分布式鎖

基礎(chǔ)數(shù)據(jù)類型之: String

單個string類型的存儲空間為512MB

string基本操作

  • 添加或修改數(shù)據(jù)

 

  1. set key value 
  • 獲取數(shù)據(jù)

 

  1. get key 
  • 刪除數(shù)據(jù)

 

  1. del key 
  • 設(shè)置過期時間(默認(rèn)單位為秒)

 

  1. expire key second 
  • 追加信息到初始value后邊

 

  1. append key value 
  • 添加/修改多個數(shù)據(jù)

 

  1. mset key1 value1 key2 value2... 
  • 獲取多個數(shù)據(jù)

 

  1. mget key1 key2 ... 
  • 獲取字符串長度

 

  1. strlen key 
  • 設(shè)置key的生命周期 控制生命周期

 

  1. setex key seconds value (秒) 
  2. psetex key millisexxonds value (毫秒) 
  • key的設(shè)置約定與數(shù)據(jù)庫中的表-主鍵-字段一一對應(yīng)表名主鍵名主鍵值字段名eg1orderid443523454nameeg2equireid435432543typeeg3newsid45435454title

基礎(chǔ)數(shù)據(jù)類型之:Hash

  • 存儲需求: 對一系列存儲的數(shù)據(jù)進(jìn)行編排,方便管理,典型應(yīng)用存儲對象信息
  • 存儲結(jié)構(gòu):一個存儲空間存儲多個鍵值對數(shù)據(jù)
  • hash類型:底層使用哈希表結(jié)構(gòu)實現(xiàn)數(shù)據(jù)存儲

 

那些你不得不知的Redis基礎(chǔ)類型常用操作、命令

 

hash存儲結(jié)構(gòu)優(yōu)化

  • 如果field數(shù)量較少,存儲結(jié)構(gòu)優(yōu)化為類數(shù)組結(jié)構(gòu)
  • 如果field數(shù)量較多,存儲結(jié)構(gòu)使用HashMap結(jié)構(gòu)

hash類型基本操作

  • 添加/修改數(shù)據(jù)

 

  1. hset key field value 
  • 獲取數(shù)據(jù)

 

  1. hget key field hgetall key 
  • 刪除數(shù)據(jù)

 

  1. hdel key field [field2 ...] 
  • 添加或刪除多個數(shù)據(jù)

 

  1. hmset key field1 value1 field2 value2 ... 
  • 獲取多個數(shù)據(jù)

 

  1. hmget key field1 field2 ... 
  • 獲取hash表中的字段的數(shù)量

 

  1. hlen key 
  • 獲取hash表中是否存在指定的字段

 

  1. hexists key field 
  • 獲取哈希表中所用的字段名或字段值

 

  1. hkeys keyhvalues key 
  • 設(shè)置指定字段的數(shù)值數(shù)據(jù)增加指定范圍的值
  1. hincrby key field increment 
  2. hincrbyfloat key field increment 
  • 如果key值下的field存在則不做操作 不存在則添加進(jìn)去

 

  1. hsetnx key field value 

hash類型數(shù)據(jù)操作的注意事項

  • hash類型下的value只能存儲字符串,不允許存儲其他數(shù)據(jù)類型,不存在嵌套現(xiàn)象,如果數(shù)據(jù)未獲取到,對應(yīng)的值為(nil)
  • 每個hash存儲的鍵值對上限為$$2^{32}-1$$個鍵值對
  • hash類型十分貼近對象的存儲形式,并且可以靈活刪除對象屬性。但hash設(shè)計初衷并不是為了存儲大量對象而設(shè)計的,切記不可濫用,更不可將hash作為對象列表使用
  • hgetall操作可以獲取全部屬性,如果內(nèi)部field過多,遍歷整體數(shù)據(jù)效率會很低,有可能會成為數(shù)據(jù)訪問瓶頸

應(yīng)用場景

  • 電商網(wǎng)站購物車設(shè)計實現(xiàn)

基礎(chǔ)數(shù)據(jù)類型之:list

  • 數(shù)據(jù)存儲需求:存儲多個數(shù)據(jù),并對數(shù)據(jù)進(jìn)入存儲Jon關(guān)鍵的順序進(jìn)行區(qū)分
  • 需要的存儲結(jié)構(gòu):一個存儲空間存儲多個數(shù)據(jù),并且數(shù)據(jù)可以體現(xiàn)進(jìn)入順序
  • list類型:保存多個數(shù)據(jù),底層使用雙向鏈表存儲結(jié)構(gòu)實現(xiàn)

 

那些你不得不知的Redis基礎(chǔ)類型常用操作、命令

 

list類型是雙向鏈表存儲的

list基本操作

  • 添加/修改數(shù)據(jù)

 

  1. lpush key value1 value2 [value3] ... //從list鏈表左側(cè)添加 
  2. rpush key value1 value2 [value3] ... //從list右側(cè)添加 
  • 獲取數(shù)據(jù)

 

  1. lrange key start stop //指定鏈表起始結(jié)束位置中的value 
  2. //在獲取未知長的的list類型的時候,想查看所有的value可以使用 -1表示倒數(shù)第一個 lrange key start -1 
  3. lindex key index //獲取鏈表中指定位置的值 
  4. llen key //獲取鏈表的長度 
  • 獲取并移除數(shù)據(jù)

 

  1. lpop key 
  2. rpop key 
  • 規(guī)定時間內(nèi)獲取并移除數(shù)據(jù)(阻塞式數(shù)據(jù)獲取)

 

  1. blpop key1 [key2] timeout //指定時間內(nèi)取出并移除key值對應(yīng)的value,若timeout超時仍未取出則返回空值(nil) 若本來沒有 其他客戶端在等待的時候添加了這個key的value則做操作 任務(wù)隊列 
  2. brpop key1 [key2] timeout 
  • 移除指定數(shù)據(jù)

 

  1. lrem key count value 

list類型數(shù)據(jù)操作注意事項

  • list中保存的數(shù)據(jù)都是string類型的,數(shù)據(jù)總?cè)萘坑邢拮疃?2^32-1個元素
  • list具有索引概念,但操作數(shù)據(jù)時通常以隊列的形式進(jìn)行入隊出隊操作,或以棧的形式進(jìn)行入棧出棧操作
  • 獲取全部操作結(jié)束數(shù)據(jù)的索引設(shè)置為-1
  • list可以對數(shù)據(jù)進(jìn)行分頁操作,通常第一頁的信息來自list,第二頁及更多的數(shù)據(jù)信息通過數(shù)據(jù)庫進(jìn)行查詢加載

基礎(chǔ)數(shù)據(jù)類型之:set

  • 存儲需求:存儲大量的數(shù)據(jù),在查詢方面提供更高的效率
  • 存儲結(jié)構(gòu):能夠保存大量的數(shù)據(jù),高效的內(nèi)部存儲機(jī)制,便于查詢
  • set類型:與hash存儲結(jié)構(gòu)完全相同,僅存儲鍵,不存儲值(nil),并且值不允許為空

 

那些你不得不知的Redis基礎(chǔ)類型常用操作、命令

 

set存儲結(jié)構(gòu)是string類型的無序集合,內(nèi)部存儲時hash存儲結(jié)構(gòu),因此添加、查找、刪除的復(fù)雜度都是O(1)

set基本操作

  • 添加不重復(fù)的數(shù)據(jù)

 

  1. sadd key value 
  • 獲取存儲的所有數(shù)據(jù)

 

  1. smembers key 
  • 刪除數(shù)據(jù)

 

  1. strem key member1 [member2] 
  • 獲取集合數(shù)據(jù)總量

 

  1. scard key 
  • 判斷集合中是否包含指定數(shù)據(jù)

 

  1. sismember key member 
  • 隨機(jī)獲取集合中指定數(shù)量的數(shù)據(jù)

 

  1. srandmember key [count
  • 隨機(jī)獲取集合中某個數(shù)據(jù)并將該數(shù)據(jù)移出集合

 

  1. apop key 
  • 兩個集合的交、并、差集

 

  1. sinter key1 [key2] 
  2. sunion key1 [key2] 
  3. adiff key1 [key2] 
  • 求兩個集合的交、并、差集并存儲到指定集合中

 

  1. sinterstore destination key1 [key2] 
  2. sunionstore destination key1 [key2] 
  3. sdiffstore destination key1 [key2] 
  • 將指定數(shù)據(jù)從原始集合中移動到目標(biāo)集合中

 

  1. smove source destination member 

注意事項

  • set類型不允許有重復(fù)數(shù)據(jù),如果添加的數(shù)據(jù)在set中已存在,將只保留一份
  • set雖然與hash存儲結(jié)構(gòu)相同,但無法啟用hash中存儲值的空間

 

那些你不得不知的Redis基礎(chǔ)類型常用操作、命令

 

基礎(chǔ)數(shù)據(jù)類型:sortedSet

  • 存儲需求:數(shù)據(jù)排序有利于數(shù)據(jù)的展示效果,需要提供一種可以根據(jù)自身特征進(jìn)行排序的方式
  • 存儲結(jié)構(gòu):可以保存排序的數(shù)據(jù)
  • 存儲類型:在set的存儲結(jié)構(gòu)上添加可排序字段

 

那些你不得不知的Redis基礎(chǔ)類型常用操作、命令

 

基本操作

  • 添加數(shù)據(jù)

 

  1. zadd key scorel member [score2 member2] 
  • 獲取全部數(shù)據(jù)

 

  1. zrange key start stop [witchscores]
  2. zrevrange key star stop [witchscores] 
  • 刪除數(shù)據(jù)

 

  1. zrem key member [member ...] 
  • 按條件查詢數(shù)據(jù)

 

  1. zrangebyscore key min max [withscores] [limit] 
  2. zrevrangebyscore key max min [withscores] 
  • 條件刪除數(shù)據(jù)

 

  1. zremrangebyrank key start stop //start stop 表示索引的開始結(jié)束位置 
  2. zremrangebyscore key min max //min max表示排序的最小到最大位置 
  • 獲取集合數(shù)據(jù)數(shù)量

 

  1. zcard key 
  2. zcount key min max 
  • 集合交、并操作

 

  1. zinterstore destination numkeys key [key ...] 
  2. zunionstore destination key [key ...] 

 

 

責(zé)任編輯:華軒 來源: 博客園
相關(guān)推薦

2022-01-27 07:39:57

進(jìn)程操作系統(tǒng)Linux

2022-10-27 09:55:00

2017-08-10 16:54:47

MySQL優(yōu)化MySQL

2017-08-16 18:03:12

Docker安全工具容器

2024-06-05 11:36:28

2020-10-21 09:36:40

Vue項目技巧

2010-08-27 10:40:55

Android

2019-09-02 16:44:59

Docker容器命令

2011-03-31 10:46:54

LinuxCLI軟件

2022-09-19 09:23:34

Linux命令

2019-11-14 15:38:46

AndroidRelease項目

2020-09-22 08:16:20

軟件開發(fā)原則

2018-05-09 11:15:59

服務(wù)器緩存技巧

2022-08-30 23:54:42

MySQL數(shù)據(jù)庫工具

2009-06-23 09:06:32

2020-06-04 13:52:00

CRM選型

2016-03-30 09:56:37

5G

2015-12-29 15:43:56

云計算虛擬主機(jī)數(shù)據(jù)中心

2020-07-09 12:50:29

JVM內(nèi)存管理Java

2012-07-17 11:19:12

Office2013
點贊
收藏

51CTO技術(shù)棧公眾號