上來主從、集群、哨兵,這誰受得了

      網友投稿 728 2025-04-01

      概念篇

      一提到Redis,大家聽到最多的應該就是“主從”、“集群”、“哨兵”了吧。對于不太精通的同學來說,乍一聽這些概念,有的人會心向往之,有的人會望而卻步。今天我們先來說一下Redis的基本配置。

      什么是 Redis?

      Redis是REmote DIctionary Server的簡稱,意為“遠程字典服務器”。它是基于BSD協議的完全開源的高性能的key-value數據庫。

      它是一個單線程卻性能極好的內存數據庫,所有的操作都是按照順序線性執行的,避免了不必要的上下文切換和競爭條件。

      采用非阻塞I/O的形式進行通信,利用Epoll的多路復用特性,提高了I/O效率。

      給大家提供兩個官方網址:

      中文網站:http://www.redis.cn/

      英文網站:http://www.redis.io/

      默認16個庫:0-15,默認使用0庫;統一密碼,默認端口6379(九宮格的merz)

      Redis的特點

      內存存儲和持久化:支持異步將內存中的數據寫到硬盤上,同時不影響“取最新N個數據”的服務操作,重啟的時候可以再次加載進內存

      發布、訂閱消息系統

      定時器、計數器:可設定過期時間

      數據結構多樣:支持String、list,set,zset,hash等多種數據結構的存儲

      數據備份:即master-slave模式的數據備份

      高性能:讀的速度是110000次/s,寫的速度是81000次/s

      原子性:所有操作都是原子性的:單個操作是原子性的;多個操作也支持事務,通過MULTI和EXEC指令包起來

      之前我們已經介紹過Redis的安裝,此處不再贅述。

      命令篇

      key命令

      select db:db為數字,表示切換數據庫為db庫

      Dbsize:查看當前數據庫的key的數量

      Flushdb:清空當前庫的所有key

      Flushall:清空所有庫的key(幾乎不用)

      keys * :所有key羅列

      exists key:判斷key是否存在

      move key db:將key移動到db庫(當前庫的key沒有了),如果當前庫不存在key,則失敗;如果當前庫與db庫都存在key值,則不移動

      expire key seconds:為key設置過期時間

      ttl key:查看還有多少秒過期,-1表示永不過期,-2表示已過期

      type key:查看你的key是什么類型

      del key:刪除key

      執行命令:1生效,0不生效

      String(字符串)

      一個key對應一個value,一個鍵最大能存儲512MB,是二進制安全的。

      SET key value:設置key的值

      GET key:獲取key的值

      del key:刪除key

      append key value:如果key已經存在并且是一個字符串,APPEND命令將指定的value追加到該key原來值(value)的末尾

      strlen key:返回key所儲存的字符串值的長度

      getrange key start end:返回key中字符串值的子字符;(0,-1)返回全部

      setrange key offset value:用value參數覆寫給定key所儲存的字符串值,從偏移量offset開始

      setex key seconds value:(set with expire)給key設置value,并在seconds秒后過期

      setnx key value:(set if not exist)先判斷key的value是否存在,不存在再插入,防止覆蓋

      mset key value [key value ...]:同時設置一個或多個key-value對

      mget key1 [key2...]:同時獲取一個或者多個key的value值

      msetnx key value [key value ...]:同時設置一個或多個key-value對,當且僅當所有給定key都不存在(有存在,有不存在的都不存)

      getset key value:將給定key的值設為value,并返回key的舊值(old value)。

      一定要是數字才能進行加減

      incr key:將key中存儲的數字加一

      decr key:將key中儲存的數字值減一

      incrby key increment:將key所儲存的值加上給定的增量值(increment)

      decrby key decrement:將key所儲存的值減去給定的減量值(decrement)

      Hash(哈希)

      鍵值對集合,適合存儲對象,類似于java中的map;每個hash可以存儲2^32?-1 鍵值對(40多億)

      hset key field value:將哈希表key中的字段field的值設為value

      hget key field:獲取存儲在哈希表中指定字段的值

      hmset key field1 value1 [field2 value2]:同時將多個field-value(域-值)對設置到哈希表key中

      hmget key field1 [field2]:獲取所有給定字段的值

      hgetall key:獲取在哈希表中指定key的所有字段和值

      hdel key field1 [field2]:刪除一個或者多個哈希表字段

      hlen key:獲取哈希表中字段的數量

      hexists key field:查看哈希表key中,指定的字段是否存在

      hkeys key:獲取哈希表中所有field的值

      hvals key:獲取哈希表中所有value的值

      hincrby key field increment:哈希表key中指定字段的整數值加上增量increment

      hincrbyfloat key field increment:哈希表key中指定字段的浮點數值加上增量increment

      hsetnx key field value:只有在字段field不存在時,設置哈希表字段的值

      List(列表)

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

      lpush從左邊(首)插入,rpush從右邊(尾)插入

      lpop從左邊移除元素并返回該元素,rpop從右邊移除元素并返回該元素

      列表最多可存儲2^32?- 1元素(每個列表可存儲40多億)。

      lpush key value[value...]:將一個或多個值插入到列表頭部

      rpush key value[value...]:將一個或多個值插入到列表尾部

      lrange key start stop:獲取隊列指定范圍內的元素

      lpop key:移出并獲取列表的第一個元素

      rpop key:移除列表的最后一個元素,返回值為移除的元素

      lindex key index:按照索引下標獲得元素,也可以使用負數下標,以 -1 表示列表的最后一個元素, -2 表示列表的倒數第二個元素,以此類推。

      llen key:獲取列表長度

      lrem key count value:刪除count個value

      ltrim key start stop:對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除(閉區間)

      rpoplpush source destination:移除列表的最后一個元素,并將該元素添加到了另一個列表并返回(尾出頭入)

      lset key index value:將key的index位置設置為value

      一上來就主從、集群、哨兵,這誰受得了

      linsert key before/after 【point】 value:在列表的元素前或者后插入元素

      如果鍵不存在,則創建新的鏈表;

      如果鍵已存在,新增內容;

      如果值全部移除,對應的鍵也就消失了;

      鏈表的操作頭和尾效率都極高,但假如是對中間元素進行操作,效率就很慘淡了。

      Set(集合)

      Redis的Set是String類型的無序集合,集合成員是唯一的。集合是通過哈希表(HashTable)實現的,所以添加、刪除、查找的復雜度都是 O(1)。集合中最大的成員數為2^32?- 1( 每個集合可存儲40多億個成員)。

      sadd key member[member...]:集合中添加一個或者多個成員(無序)

      smembers key:返回集合中的所有成員

      sismember key member:判斷member元素是否是集合key的成員

      scard key:獲取集合的成員數

      srem key member[member...]:刪除集合中的一個或者多個元素

      srandmember key [count]:返回集合中一個或多個隨機數---------適合做挖財項目

      spop key:移除并返回集合中的一個隨機元素

      smove source destination member:將member元素從source集合移動到destination

      sdiff key1 [key2]:返回第一個集合與其他集合之間的差異

      sinter key1 [key2]:返回給定所有集合的交集

      sunion key1 [key2]:返回所有給定集合的并集

      zset(sorted set有序集合)

      Redis的zset和set一樣也是string類型元素的集合,且不允許重復的成員。不同的是每個元素都會關聯一個double類型的分數。

      redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重復。添加元素到集合,元素在集合中存在則更新對應score。

      zadd key score1 member1 [score2 member2]:向有序集合添加一個或者多個成員,或者更新已存在成員的分數

      ZRANGE key start stop [WITHSCORES]:通過索引區間返回有序集合指定區間內的成員(是否包含分數信息)

      ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]:通過分數返回范圍內的member成員(是否包含分數),其中“(”表示不包含;limit作用是返回限制 (limit start count)

      示例:

      zrangebyscore zset01 60 (90 withscores limit 2 2:從zset01中選取分數大于等于60,小于90的從第二個索引開始往后兩個的成員

      zrem key member[member...]:移除有序集合中的一個或多個成員

      zcard key:獲取有序集合的成員數

      zcount key min max:獲取有序集合的大于min小于max的成員數

      zrank key member:獲取member的索引

      zscore key member:獲取有序集合的member的分數

      ZREVRANK key member:返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序

      ZREVRANGE key start stop [WITHSCORES]:通過索引返回有序集中指定區間內的成員,分數從高到低

      ZREVRANGEBYSCORE key max min [WITHSCORES]:返回有序集中指定分數區間內的成員,分數從高到低排序

      以上就是今天的全部內容了,如果你有不同的意見或者更好的idea,歡迎聯系阿Q,添加阿Q可以加入技術交流群參與討論呦!

      Redis 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:在WPS 表格中進行快速計算(在wps中怎樣做表格)
      下一篇:C++ opencv配置 Vs2019和Clion
      相關文章
      亚洲国产精品日韩| 激情小说亚洲图片| 亚洲视频在线一区二区| 国产精品无码亚洲精品2021| 日韩亚洲产在线观看| 亚洲精品美女久久久久9999| 亚洲国产香蕉碰碰人人| 国产亚洲av片在线观看播放 | 亚洲欧洲精品成人久久奇米网 | 亚洲第一页在线观看| 亚洲人成在线影院| 亚洲国产综合精品中文第一区| 国产v亚洲v天堂无码网站| 亚洲精品成人无码中文毛片不卡| 国产乱辈通伦影片在线播放亚洲| 青青草原亚洲视频| 亚洲国产日韩在线视频| 亚洲AV永久无码区成人网站| 亚洲国产精品VA在线看黑人 | 激情五月亚洲色图| 亚洲性无码一区二区三区| 亚洲精品一卡2卡3卡四卡乱码| 亚洲成av人在线观看网站| 国产精品亚洲综合一区在线观看| heyzo亚洲精品日韩| 亚洲高清偷拍一区二区三区| 亚洲中文无韩国r级电影| 亚洲日韩精品一区二区三区| 久久精品国产亚洲av四虎| 久久久亚洲AV波多野结衣| 亚洲人成免费电影| 亚洲欧美成人综合久久久| mm1313亚洲精品无码又大又粗| 国产精品亚洲美女久久久| 日韩va亚洲va欧洲va国产| 久久久亚洲欧洲日产国码aⅴ | 亚洲熟妇中文字幕五十中出| 亚洲国产综合精品中文第一区| 亚洲白色白色在线播放| 亚洲中文字幕无码av永久| 国产亚洲男人的天堂在线观看|