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

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

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

      Redis解讀(1):Redis安裝啟動及常見數據類型

      Redis 簡介

      Redis 是我們在互聯網應用中使用最廣泛的一個 NoSQL 數據庫,基于 C 開發的鍵值對存儲數據庫。

      Redis 這個名字是 Remote Dictionary Service 字母縮寫。

      很多人想到 Redis,就想到緩存。但實際上 Redis 除了緩存之外,還有許多更加豐富的使用場景。比如分布式鎖,限流。

      Redis 特點

      • 支持數據持久化
      • 支持多種不同的數據結構類型之間的映射
      • 支持主從模式的數據備份
      • 自帶了發布訂閱系統
      • 定時器、計數器

      redis的安裝

      四種方式獲取一個 Redis:

      1. 直接編譯安裝(推薦使用)

        提前準備好 gcc 環境

        yum install gcc-c++
        

        接下來下載并安裝 Redis:

        wget https://download.redis.io/releases/redis-6.2.1.tar.gz
        tar -zxvf redis-6.2.1.tar.gz
        cd redis-6.2.1/
        make
        make install
        

        安裝完成后,啟動 Redis:

        redis-server redis.conf
        

        啟動成功頁面如下:

      2. 使用Docker

        Docker 安裝好之后,啟動 Docker ,直接運行安裝命令即可,啟動后返回容器運行的ID

        docker run --name taoguoguo-redis -d -p 6379:6379 redis --requirepass 123
        
        • 我們先查看運行在Docker上的redis容器

          docker ps 
          

        • 確保容器正在運行后,可以從宿主機上連接(前提是宿主機上存在 redis-cli),因為第一種編譯安裝方式我們已經在宿主機上安裝了redis 所以可以直接使用宿主機的命令行工具

          #redis-cli 客戶端命令 默認參數有地址 -h 127.0.0.1 端口 -p 6379 密碼 -a '123' 
          redis-cli -a 123
          

          宿主機客戶端,連接成功!

        • 如果宿主機上沒有安裝 Redis,那么也可以進入到 Docker 容器種去操作 Redis:

          #1.退出當前redis
          exit
          #2.進入Redis容器
          docker exec -it taoguoguo-redis redis-cli -a 123
          

      3. 也可以直接安裝

        • CentOS

          yum install redis
          
        • Ubuntu

          apt-get install redis
          
        • Mac

          brew install redis
          
      4. 通過在線體驗,使用Redis的相關功能 http://try.redis.io/

      redis的后臺啟動

      • 首先,修改 redis.conf 配置文件,將daemonize 守護線程啟動方式開啟

        配置完成后,保存退出,啟動 redis

        redis-server redis.conf
        

      redis的數據類型

      String

      String 是 Redis 里邊最最簡單的一種數據結構。在 Redis 中,所以的 key 都是字符串(序列化后的字符串),但是,不同的 key 對應的 value 則具備不同的數據結構,我們所說的五種不同的數據類型,主要是指 value 的數據類型不同。

      Redis 中的字符串是動態字符串,內部是可以修改的,像 Java 中的 StringBuffer,它采用分配冗余空間的方式來減少內存的頻繁分配。在 Redis 內部結構中,一般實際分配的內存會大于需要的內存,當字符串小于 1M 的時候,擴容都是在現有的空間基礎上加倍,擴容每次擴 1M 空間,最大 512M。

      set

      set 就是給一個 key 賦值的。

      append

      使用 append 命令時,如果 key 已經存在,則直接在對應的 value 后追加值,否則就創建新的鍵值對。

      decr

      可以實現對 value 的減 1 操作(前提是 value 是一個數字),如果 value 不是數字,會報錯,如果value 不存在,則會給一個默認的值為 0,在默認值的基礎上減一。

      decrby

      和 decr 類似,但是可以自己設置步長,該命令第二個參數就是步長。

      比如把K3 的值 減10 設置每次遞減的步長為10即可

      get

      get 用來獲取一個 key 的 value。

      getrange

      getrange 可以用來返回 key 對應的 value 的子串,這有點類似于 Java 里邊的 substring。這個命令第二個和第三個參數就是截取的起始和終止位置,其中,0表示起始字符串,-1 表示最后一個字符串,-2 表示倒數第二個字符串,以此類推...

      注意:原來存在在redis中 key對應的value 不會發生改變

      getset

      獲取并更新某一個 key。

      incr

      給某一個 key 的 value 自增

      incrby

      給某一個 key 的 value 自增,同時還可以設置步長

      incrbyfloat

      和 incrby 類似,但是自增的步長可以設置為浮點數。 incrby 是不可以增加浮點數的

      mget 和 mset

      批量獲取和批量存儲

      ttl

      查看 key 的有效期, -1 代表永遠不會過期 , -2 代表已經過期

      setex

      在給 key 設置 value 的同時,還設置過期時間,時間到了

      psetex

      和 setex 類似,只不過這里的時間單位是毫秒(1000ms = 1s)。

      setnx

      默認情況下, set 命令會覆蓋已經存在的 key,setnx 則不會。

      msetnx

      批量設置,如果有一個存在,整個操作會失敗。

      setrange

      指定offset(偏移量) 覆蓋一個已經存在的 key 的value

      strlen

      查看字符串長度

      String(BIT) 相關命令

      在 Redis 中,字符串都是以二進制的方式來存儲的。例如 set k1 a,a 對應的 ASCII 碼是 97,97 轉為二進制是 01100001,BIT 相關的命令就是對二進制進行操作的。

      getbit

      key 對應的 value 在 offset 處的 bit 值

      setbit

      修改 key 對應的 value 在 offset 處的 bit 值

      bitcount

      統計二進制數據中 1 的個數, 采用位

      bitCount應用場景舉例,假設我要記錄測算系統每個用戶當前登錄的次數,比如用戶名為: taoguoguo

      #命令如下
      setbit key 當前登錄次數 偏移量
      #第一次登錄
      setbit taoguoguo 1 1
      #第二次登錄
      setbit taoguoguo 2 1
      #第三次登錄
      setbit taoguoguo 3 1
      #當前登錄次數統計
      bitcount taoguoguo 
      

      List

      Redis中的List實際上是一個string類型的雙向鏈表,因此既可以做棧也可以做隊列來使用。不同的是棧是先進后出,隊列是先進先出。鏈表被廣泛地用于實現Redis的各種功能,如列表鍵、發布與訂閱、慢查詢、監視器等。Redis中單個List可容納2^32-1約40億個元素

      鏈表的特點:

      • 鏈表中的元素是有序的,可通過索引下標來獲取某個元素或某個范圍內的元素列表。
      • 鏈表中的元素是可以重復的

      lpush

      將所有指定的值插入到存于 key 的列表的頭部。如果 key 不存在,那么在進行 push 操作前會創建一個空列表。 如果 key 對應的值不是一個 list 的話,那么會返回一個錯誤。

      rpush

      向存于 key 的列表的尾部插入所有指定的值。

      lrange

      返回列表指定區間內的元素,索引從0開始,-1為最后一個。

      lpop

      移除并返回列表的頭元素。

      rpop

      移除并返回列表的尾元素。

      lindex

      返回列表中,下標為 index 的元素。

      ltrim

      ltrim 可以對一個列表進行修剪,類似于subList。

      blpop/brpop

      阻塞式的彈出,相當于 lpop 的阻塞版,如果當前List數據為空,那么在阻塞時長內如果有添加元素 會進行彈出,如果沒有元素加入,命令超過時間自動停止。

      另一客戶端在阻塞時間加入新元素至k1鏈表

      Set

      Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重復的數據。

      Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。

      集合中最大的成員數為 2^32 - 1 (4294967295, 每個集合可存儲40多億個成員)。

      sadd

      添加元素到一個 key 中

      smembers

      獲取一個 key 下的所有元素

      srem

      移除指定的元素

      sismemeber

      返回某一個成員是否在集合中, 0 代表不存在, 1表示存在

      scard

      返回集合的數量

      srandmember

      隨機返回一個元素

      spop

      隨機返回并且出棧一個元素

      smove

      把一個元素從一個集合移到另一個集合中去

      sdiff

      返回兩個集合的差集,不同集合的順序,差集結果是不一樣的

      sinter

      返回兩個集合的交集

      sdiffstore

      這個類似于 sdiff ,不同的是,計算出來的結果會保存在一個新的集合中

      sinterstore

      類似于 sinter,只是將計算出來的交集保存到一個新的集合中

      sunion

      求并集

      sunionstore

      求并集并且將結果保存到新的集合中

      Hash

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

      Redis 中每個 hash 可以存儲 2^32 - 1 鍵值對(40多億)。

      hset

      添加值

      hget

      獲取值

      hmset

      批量設置

      hmget

      批量獲取

      hdel

      刪除一個指定的 field

      hsetnx

      默認情況下,如果 key 和 field 相同,會覆蓋掉已有的 value,hsetnx 則不會

      hvals

      獲取所有的 value

      hkeys

      獲取所有的 key

      hgetall

      同時獲取所有的 key 和 value

      hexists

      返回 field 是否存在, 0 不存在, 1存在

      hincrby

      給指定的 value 自增

      hincrbyfloat

      可以自增一個浮點數

      hlen

      返回 某一個 key 中 value 的數量

      hstrlen

      返回某一個 key 中的某一個 field 的字符串長度

      ZSet

      Redis 有序集合和集合一樣也是 string 類型元素的集合,且不允許重復的成員。

      不同的是每個元素都會關聯一個 double 類型的分數。redis 正是通過分數來為集合中的成員進行從小到大的排序。

      有序集合的成員是唯一的,但分數(score)卻可以重復。

      集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。

      zadd

      將指定的元素添加到有序集合中

      zscore

      返回 member 的 score 值

      zrange

      返回集合中的一組元素,可以加上 withscores 連同分數一起返回

      zrevrange

      返回一組元素,但是是倒序

      zcard

      返回元素個數

      zcount

      返回 score 在某一個區間內的元素,默認是閉區間,如果要開區間 在 score值 前面加上 (

      zrangebyscore

      按照 score 的范圍返回元素

      zrank

      返回元素的排名(從小到大)

      zrevrank

      返回元素排名(從大到小)

      zincrby

      score自增

      zinterstore

      給兩個集合求交集,給交集求和

      zrem

      彈出一個元素

      zlexcount

      計算有序集合中成員數量

      zrangebylex

      返回指定區間內的成員

      Key相關操作

      del

      刪除一個 key/value

      dump

      序列化給定的 key

      exists

      判斷一個 key 是否存在

      ttl

      查看一個 key 的有效期 , -1 永不過期 , -2 已經過期

      expire

      給一個 key 設置有效期,如果 key 在過期之前被重新 set 了,則過期時間會失效

      persist

      移除一個 key 的過期時間

      keys *

      查看所有的 key

      pttl

      和 ttl 一樣,只不過這里返回的是毫秒

      數據類型總結

      1. 四種數據類型(list/set/zset/hash),在第一次使用時,如果容器不存在,就自動創建一個
      2. 四種數據類型(list/set/zset/hash),如果里邊沒有元素了,那么立即刪除容器,釋放內存。
      posted @ 2021-04-12 23:20  DOONDO  閱讀(714)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 人妻少妇偷人无码视频| 性男女做视频观看网站| 国产无遮挡裸体免费久久| 亚洲乱色一区二区三区丝袜 | 自拍偷自拍亚洲精品情侣| 免费av深夜在线观看| 比如县| 国产亚洲精品aaaa片app| 日韩亚洲精品国产第二页| 在线a人片免费观看| 男女性高爱潮免费网站| 国产亚洲精品第一综合另类灬| 国产欧美日韩精品丝袜高跟鞋| 99精品国产一区二区三| a男人的天堂久久a毛片| 樱花草视频www日本韩国| 玩弄放荡人妻少妇系列| 无码一区中文字幕| 国产永久免费高清在线观看| 在线精品另类自拍视频| 91色老久久精品偷偷性色| 人妻在线中文字幕| 亚洲顶级裸体av片| 色狠狠色婷婷丁香五月| 国产日产亚洲系列最新| 色综合久久中文综合久久激情| 日韩精品国产另类专区| 中文字幕在线观看一区二区| 国产精品v欧美精品∨日韩| 少妇xxxxx性开放| 欧美牲交videossexeso欧美| 国产日韩精品欧美一区灰| 欧美高清精品一区二区| 亚洲综合精品一区二区三区| P尤物久久99国产综合精品| 91中文字幕一区在线| 焉耆| 少妇人妻精品无码专区视频| 公天天吃我奶躁我的在线观看| 国产国产午夜福利视频| 亚洲av与日韩av在线|