<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [筆記] Redis 基本操作

      redis基本操作

      ?? 本文為學(xué)習(xí)redis的個人筆記,內(nèi)容較基礎(chǔ),所引用的文章或網(wǎng)站鏈接在文末給出。

      redis簡介

      Redis 是完全開源的,遵守 BSD 協(xié)議,是一個高性能的 key-value 數(shù)據(jù)庫。

      Redis 與其他 key - value 緩存產(chǎn)品有以下三個特點:

      • Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時候可以再次加載進行使用。
      • Redis不僅僅支持簡單的key-value類型的數(shù)據(jù),同時還提供list,set,zset (sortded set),hash等數(shù)據(jù)結(jié)構(gòu)的存儲。
      • Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。

      使用環(huán)境

      • WSL2
      • Ubuntu 22.04.2 LTS

      啟動方式

      啟動服務(wù)

      redis-server
      

      image-20230725181534116

      • redis-server命令使用默認(rèn)配置啟動 redis;

      • redis-server命令后面可以寫配置文件的命令,從而實現(xiàn)自定義配置啟動 redis;

      如:

      redis-server /etc/redis.conf
      

      啟動redis-cli

      redis-cli
      

      使用-p 7777可以指定連接的端口,我的配置文件里指定的端口號是7777,所以需要使用redis-cli -p 7777啟動。

      image-20230725181824649
      • 使用ping命令測試是否連接成功,如果連接成功,會返回PONG
      • 如果配置文件中設(shè)置了密碼,則需要使用AUTH [密碼]指令,否則無法繼續(xù)。

      通用指令

      redis的大部分指令和數(shù)據(jù)類型有關(guān),但也有一些比較基礎(chǔ)的指令是通用的。

      KEYS

      查詢與pattern匹配的 keys。

      語法:KEYS [pattern]

      支持的pattern格式:

      • h?llo 匹配 hello, hallohxllo
      • h*llo 匹配 hlloheeeello
      • h[ae]llo 匹配 hellohallo, 但不能匹配 hillo
      • h[^e]llo 匹配 hallo, hbllo, ... 但不能匹配 hello
      • h[a-b]llo 匹配 hallohbllo

      DEL

      刪除指定的 key,支持一次性刪除多個。

      語法:DEL key [key ...]

      TTL

      查詢一個 key 的剩余有效時間(單位:秒)。

      語法:TTL key

      返回值:

      • 已過期:-2
      • 永久有效:-1
      • 仍有效:>=0

      數(shù)據(jù)類型

      redis最基礎(chǔ)的5種數(shù)據(jù)類型:

      • string:字符串
      • hash:哈希
      • list:列表
      • set:集合
      • zset:有序集合(sorted set

      下面開始討論不同的數(shù)據(jù)類型的相關(guān)指令

      通過輸入help @<group>可以獲得該數(shù)據(jù)類型的相關(guān)操作指令:

      # 可以通過這5個指令獲取指定數(shù)據(jù)類型的相關(guān)指令介紹
      help @string
      help @hash
      help @list
      help @set
      help @sorted-set
      

      image-20230725185323788

      string 字符串

      string字符串類型是redis里最簡單的數(shù)據(jù)類型,常用的指令如下:

      SET

      設(shè)置指定keyvalue

      語法:SET key value

      image-20230725185653891

      盡管20看起來是數(shù)值類型,但是在redis中會將其視為string類型。不過有相關(guān)的操作可以用于處理這種可以轉(zhuǎn)換為數(shù)字的string數(shù)據(jù)。

      GET

      獲取指定keyvalue

      語法:GET key

      image-20230725185845418

      MSET和MGET

      批量設(shè)置和獲取多個值。

      語法:

      • MSET key value [key value]

      • MGET key [key]

      image-20230725190115847

      INCR

      increase:指定的key的數(shù)值加一,前提是指定的key的value可以轉(zhuǎn)換為數(shù)值。

      語法:INCR key

      image-20230725190943823

      操作成功之后,會返回更新后的值。

      INCRBY

      increase by:與INCR類似,但是可以指定增加的數(shù)值,可以傳入負值從而實現(xiàn)減法。

      語法:INCRBY KEY INCREAMENT

      image-20230725191156236

      DECR

      decrease:INCR的相反操作,但其實可以通過INCRBY-1實現(xiàn),所以DECR比較少用到。

      語法:DECR key

      SETEX

      set expire:設(shè)置一個值,同時設(shè)置其有效時間(以秒為單位),有效時間結(jié)束后,這個值將失效。

      必要性:由于redis是工作于內(nèi)存的,如果大量的鍵值對一直存在,會占用大量的內(nèi)存空間,設(shè)置有效時間可以適當(dāng)?shù)仳v出內(nèi)存空間。

      語法:SETEX key seconds value

      image-20230725192014882

      當(dāng)鍵值對過期后,再次執(zhí)行GET,將得到(nil).

      nil在redis中表示該key不存在。


      hash 哈希值

      Redis hash 是一個 string 類型的 field(字段) 和 value(值) 的映射表,hash 特別適合用于存儲對象。

      類似于string類型,最基礎(chǔ)的指令是 set 和 get 指令,hash相應(yīng)的指令在前面有一個h前綴表示hash。

      HSET和HMSET

      從指令中可以看出這兩個指令的區(qū)別是M即 multiple,HMSET可以同時設(shè)置一個hash的多個字段。

      在redis較新的版本中,HSET也支持同時設(shè)置多個字段了,HMSET已棄用。

      語法:HSET key field value [field value ...]

      如果要表示如下的一個對象:

      person = {
          name: "nicholas",
          age: "20"
      }
      

      可以用指令:

      hset person name nicholas age 20
      

      HGET

      獲取指定key ( hash類型 ) 的指定字段的值。

      語法:HGET key field

      image-20230725200558915

      HKEYS

      獲取一個哈希表中的所有字段

      語法:HKEYS key

      image-20230725200806755

      HVALS

      獲取一個哈希表中的所有值

      語法:HVALS key

      image-20230725200850331

      list 列表

      Redis列表是簡單的字符串列表,按照插入順序排序。可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。

      列表的相關(guān)指令圍繞幾個關(guān)鍵字展開:BL或RPUSH或POP.

      B表示 block,即阻塞。

      L或R指 left 或 right,指從列表的左邊或右邊進行操作。

      PUSH或POP是推入或彈出,是list新增或刪減元素的操作。

      LPUSH

      從列表左邊推入一個新元素。

      語法:LPUSH key element

      支持推入多個新元素。

      語法:LPUSH key element [element]

      需要注意的是,推入的順序是 element1, element2, element3, ......

      而又是從左邊依次推入的,因此,會得到如下結(jié)果:

      image-20230725215852411

      LRANGE指令在下文介紹。

      • 推入的順序是:1、2、3;

      • 得到的結(jié)果是:3、2、1.

      RPUSH

      從列表右邊推入新元素。

      語法:RPUSH key element [element]

      LPOP

      從列表左邊彈出指定數(shù)量的元素。

      語法:LPOP key [count]

      • [count]參數(shù)可選,彈出指定數(shù)量的元素,缺省值為1.

      RPOP

      從列表右邊彈出指定數(shù)量的元素。

      語法:RPOP key [count]

      BLPOP和BRPOP

      LPOPRPOP可以看出這兩個指令分別從列表的左邊或右邊彈出元素,區(qū)別在于其前綴B,表示 block 阻塞。

      • 如果列表中有元素,則會直接彈出元素;

      • 如果列表中沒有元素,則會阻塞,直到有新元素進入列表,再執(zhí)行彈出操作。

      ( 或許你有在操作系統(tǒng)課程中學(xué)到關(guān)于“生產(chǎn)者 消費者”的相關(guān)知識 )

      語法:

      • BLPOP key timeout

      • BRPOP key timeout

      timeout是阻塞的最大時間,單位為 秒,超出該時間將不再等待。

      如圖,(這里提前將list清空了),執(zhí)行blpop list 30,阻塞。

      image-20230725221732472

      等待 30s 之后,仍沒有新元素,返回(nil).

      image-20230725221832043

      模擬兩個用戶

      A:阻塞

      image-20230725221732472

      B:新增元素

      image-20230725222506259

      A:拿到元素

      image-20230725222535594

      list除了上述的push/pop的增刪操作,還有更改元素和查詢元素的操作。

      LRANGE

      查詢指定區(qū)間之內(nèi)的元素。

      語法:LRANGE key start end

      startend是“偏移量”,0 表示第一個元素,支持負數(shù),-1 表示倒數(shù)第一個。

      startend組成的區(qū)間是閉區(qū)間。

      使用LRANGE key 0 -1即可獲取列表的所有元素。

      image-20230725223624337

      LINDEX

      根據(jù)index獲取列表中指定位置的元素。

      語法:LINDEX key index

      image-20230725223807013

      LSET

      編輯列表中指定位置的元素。

      語法:LSET key index element

      image-20230725231200663

      LLEN

      獲取列表的長度。

      語法:LLEN key

      image-20230725231357082

      set 集合

      Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現(xiàn)重復(fù)的數(shù)據(jù)。

      關(guān)于一個集合的操作

      SADD

      向集合中添加若干個成員。

      語法:SADD key member [member ...]

      image-20230725231538217

      SCARD

      獲取集合的成員數(shù)量。

      語法:SCARD key

      image-20230725231629365

      SMEMBERS

      獲取集合的所有成員。

      語法:SMEMBERS key

      image-20230725232518991

      SISMEMBER

      set-is-member:用于查詢一個值是否是集合的成員之一。

      語法:SISMEMBER key member

      image-20230725232716396
      • 返回 1 表示存在。
      • 返回 0 表示不存在。

      SREM

      set-remove:用于移除若干成員。

      語法:SREM key member [member ...]

      image-20230725232926625

      SRANDMEMBER

      set-random-member:隨機獲取指定數(shù)量的集合成員。

      語法:SRADNMEMBER key [count]

      • [count]參數(shù)可選,缺省值為1.
      image-20230725233548191

      SPOP

      set-pop:隨機彈出指定數(shù)量的集合成員。

      語法:SPOP key [count]

      image-20230725233714273

      關(guān)于多個集合的操作

      SINTER

      若干個集合的交集。

      語法:SINTER key [key ...]

      image-20230725234359101

      上述例子中:

      1 2 3 4 5
      

      -5 -3 -1 1 3 5
      

      的交集為:

      1 3 5
      

      SUNION

      若干個集合的并集。

      語法:SUNION key [key ...]

      image-20230725234802486

      sorted-set 有序集合

      有序集合的每一個成員都會攜帶一個double類型的score用于排序。

      對于集合中的成員,score是可以相同的,但是member即成員不能相同。

      ZADD

      添加成員,先寫score再寫member,可以寫多組。

      語法:ZADD key score1 member1 [score2 member2 ...]

      image-20230725235255127

      ZCARD

      獲取集合的成員數(shù)量。

      語法:ZCARD key

      image-20230725235331461

      ZCOUNT

      計算在有序集合中指定區(qū)間分?jǐn)?shù)的成員數(shù)。

      語法:ZCOUNT key min max

      image-20230725235436326

      區(qū)間[min, max]是閉區(qū)間。

      ZINCRBY

      對指定成員的score加上增量increment.

      語法:ZINCRBY key increment member

      image-20230726000101700

      返回增加成功后的score.

      ZRANGE

      通過索引區(qū)間返回有序集合指定區(qū)間內(nèi)的成員。

      語法:ZRANGE key start stop [WITHSCORES]

      image-20230726000354765

      這里的startstop并不是score的區(qū)間,而是該有序集合排序之后的index區(qū)間。

      ZRANGEBYSCORE

      通過分?jǐn)?shù)返回有序集合指定區(qū)間內(nèi)的成員。

      語法:ZRANGEBYSCORE key min max

      image-20230726000604954

      ZRANK

      返回指定成員的索引。

      語法:ZRANK key member

      image-20230726000657117

      ZREM

      移除一個或多個成員。

      語法:ZREM key member [member ...]

      image-20230726000808383

      Redis可視化軟件

      圖形化界面可以更直觀地觀察redis里的數(shù)據(jù),這里推薦的是Another Redis Desktop Manage.

      image-20230726001557356

      基本使用方法

      創(chuàng)建連接

      image-20230726001842533

      新建鍵值對

      image-20230726001950110

      查看數(shù)據(jù)

      雙擊左邊的key列表,即可在右邊查看具體的值。

      image-20230726002018478

      界面設(shè)置

      界面左上角有一個設(shè)置按鈕,點擊之后可以進行light/dark模式的切換、界面縮放、字體等配置。

      image-20230726002211631

      image-20230726002314541


      引用

      [1] Redis 教程 | 菜鳥教程 (runoob.com)

      [2] Redis data types | Redis

      [3] Redis指令HSET和HMSET有什么區(qū)別_hmset和hset_Clear_rain的博客-CSDN博客

      [4] Redis基本操作命令(圖文詳解)_redis 命令_進擊小高的博客-CSDN博客

      posted @ 2023-07-26 19:23  feixianxing  閱讀(609)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 午夜福利影院不卡影院| 久热这里有精品免费视频| 亚洲成女人图区一区二区| 孕交videos小孕妇xx| 国产95在线 | 欧美| 区一区二区三区中文字幕| 少妇久久久被弄到高潮| www国产精品内射熟女| 高潮潮喷奶水飞溅视频无码| 自拍亚洲一区欧美另类| 亚洲熟妇熟女久久精品综合 | 中文字幕久久精品波多野结| 人妻日韩人妻中文字幕| 亚洲国产av无码综合原创国产| 精品国精品国自产在国产| 99久久久国产精品消防器材| 小污女小欲女导航| 日韩福利片午夜免费观着| 福利一区二区不卡国产| 偷拍美女厕所尿尿嘘嘘小便| 亚洲人妻系列中文字幕| 国产999久久高清免费观看 | 天堂V亚洲国产V第一次| 午夜国产精品福利一二| 国产成人自拍小视频在线| 北岛玲中文字幕人妻系列| 伊人av超碰伊人久久久| 国产福利社区一区二区| 乌审旗| 国产精品毛片一区视频播| 亚洲欧洲精品国产二码| 99re6这里有精品热视频| 国产一区二区波多野结衣| 曲麻莱县| 一本色道久久加勒比综合| 樱花草在线社区www| 成人免费xxxxx在线观看| 一本精品99久久精品77| 在熟睡夫面前侵犯我在线播放| 亚洲熟妇自偷自拍另欧美 | 四虎永久免费高清视频|