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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Redis教程之基础-五种数据基本操作

發布時間:2023/12/8 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis教程之基础-五种数据基本操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
若要修改測試環境的redis數據,首先獲得類型(五中類型字符串、散列、列表、集合、有序集合), 一、通用類型即對key的操作 1 獲得鍵值的數據類型。返回none表示輸入的鍵不存在,string表示字符串,hash 散列類型,list列表,set集合類型,zset(有序集合類型) type 鍵名 比如:type name 2 獲得所有的keys keys * 比如: redis> MSET one 1 two 2 three 3 four 4 # 一次設置 4 個 key OKredis> KEYS *o* 1) "four" 2) "two" 3) "one"redis> KEYS t?? 1) "two"redis> KEYS t[w]* 1) "two" 3 exists 鍵名 判斷一個鍵是否存在,存在則返回1,不存在返回0 redis> SET db "redis" OKredis> EXISTS db (integer) 1redis> DEL db (integer) 1redis> EXISTS db (integer) 0 4 刪除鍵,成功返回1,失敗返回0。 # 刪除單個 keyredis> SET name huangz OKredis> DEL name (integer) 1# 刪除一個不存在的 keyredis> EXISTS phone (integer) 0 5命令類型:設置/獲得(1個或者多個)、刪除、自增、獲得某個范圍的值。 增刪查找命令對比
?字符串散列列表集合有序集合?
設置/新增set keyHSET key field valueLPUSH key value
RLPUSH key value
SADD key member ZADD key score member?
查詢getHGET key field
HKEYS key(返回所有的field)
HGETALL key 返回所有的field和value
lrange key start stop
lindex key index
LINSERT key BEFORE|AFTER pivot value
SCARD(返回集合數量)
Smember
?SRANDMEMBER
ZCARD key
ZCOUNT key min max
?
刪除其中一個元素del keyhdel key fieldlpop/rpop
brpop(帶阻塞)
SMOVE
SPOP
ZREM key member1 設置失效)
修改sethsetLSET key index value??

二、字符串、整數
1 設置和獲取字符串的值 set/get。 說明:set 設置的key若存在,則會覆蓋。get獲取的key不存在則會返回nil。 redis> GET db (nil)redis> SET db redis OK 2 遞增數字,incr(自增1) 和incrby(增加指定整數) 當數字不存在時,會直接回默認鍵值0,所以第一次遞增后值是1 redis> SET page_view 20 OKredis> INCR page_view (integer) 21 說明:若給一個字符串自增,則會返回 incrby # key 存在且是數字值redis> SET rank 50 OKredis> INCRBY rank 20 (integer) 70redis> GET rank "70" 6 自減 decr(自減1)和decrby(自減指定整數) 7 尾部追加 append # 對不存在的 key 執行 APPENDredis> EXISTS myphone # 確保 myphone 不存在 (integer) 0redis> APPEND myphone "nokia" # 對不存在的 key 進行 APPEND ,等同于 SET myphone "nokia" (integer) 5 # 字符長度# 對已存在的字符串進行 APPENDredis> APPEND myphone " - 1110" # 長度從 5 個字符增加到 12 個字符 (integer) 12redis> GET myphone "nokia - 1110" 8 獲取字符串長度 # 獲取字符串的長度redis> SET mykey "Hello world" OKredis> STRLEN mykey (integer) 11# 不存在的 key 長度為 0redis> STRLEN nonexisting (integer) 0 9 設置鍵值:使用 【字符串:字符串】格式 設置/獲得多個鍵值
三 散列類型命令 命令格式: 一個: hset key field vaue hget key field 多個 hmset key field1 value1 field2 value2 hmget key field1 field2 所有 hgetAll key
1、HSet不分插入和更新,執行插入時返回1,執行更新時返回0

2 設置/獲得多個字段值hmset、hmget、hgetall redis> HMSET pet dog "doudou" cat "nounou" # 一次設置多個域 OKredis> HMGET pet dog cat fake_pet # 返回值的順序和傳入參數的順序一樣 1) "doudou" 2) "nounou" 3) (nil) redis> HSET people jack "Jack Sparrow" (integer) 1redis> HSET people gump "Forrest Gump" (integer) 1redis> HGETALL people 1) "jack" # 域 2) "Jack Sparrow" # 值 3) "gump" 4) "Forrest Gump"
3 判斷是否存在;hexists 4 HSETNX,當不存在時賦值,若已存在則不執行任何操作。 5 增加數字:hincrby 6 刪除:hdel 7只獲取字段名/字段值:hkeys/hvals
四 列表類型命令 1 lpush/rpush,像列表左/右邊增加元素。,返回列表長度。 # 加入單個元素redis> LPUSH languages python (integer) 1# 加入重復元素redis> LPUSH languages python (integer) 2redis> LRANGE languages 0 -1 # 列表允許重復元素 1) "python" 2) "python"# 加入多個元素redis> LPUSH mylist a b c (integer) 3redis> LRANGE mylist 0 -1 1) "c" 2) "b" 3) "a" 2 lpop/rpop,從兩端彈出元素。返回彈出的元素,若無,則返回nil。 redis> LLEN course (integer) 0redis> RPUSH course algorithm001 (integer) 1redis> RPUSH course c++101 (integer) 2redis> LPOP course # 移除頭元素 "algorithm001
3 獲取隊列中元素個數:llen 4 lrange 獲得列表子集 redis> RPUSH fp-language lisp (integer) 1redis> LRANGE fp-language 0 0 1) "lisp"redis> RPUSH fp-language scheme (integer) 2redis> LRANGE fp-language 0 1 1) "lisp" 2) "scheme" 5 刪除列表中前count為value的值。lrem key count value # 先創建一個表,內容排列是 # morning hello morning helllo morningredis> LPUSH greet "morning" (integer) 1 redis> LPUSH greet "hello" (integer) 2 redis> LPUSH greet "morning" (integer) 3 redis> LPUSH greet "hello" (integer) 4 redis> LPUSH greet "morning" (integer) 5redis> LRANGE greet 0 4 # 查看所有元素 1) "morning" 2) "hello" 3) "morning" 4) "hello" 5) "morning"redis> LREM greet 2 morning # 移除從表頭到表尾,最先發現的兩個 morning (integer) 2 # 兩個元素被移除redis> LLEN greet # 還剩 3 個元素 (integer) 3redis> LRANGE greet 0 2 1) "hello" 2) "hello" 3) "morning"redis> LREM greet -1 morning # 移除從表尾到表頭,第一個 morning (integer) 1redis> LLEN greet # 剩下兩個元素 (integer) 2redis> LRANGE greet 0 1 1) "hello" 2) "hello"redis> LREM greet 0 hello # 移除表中所有 hello (integer) 2 # 兩個 hello 被移除redis> LLEN greet (integer) 0 6 獲得/指定索引的元素值 lindex key index lset key index value
7 保留指定列表片段:ltrim redis> LRANGE alpha 0 -1 # alpha 是一個包含 5 個字符串的列表 1) "h" 2) "e" 3) "l" 4) "l" 5) "o"redis> LTRIM alpha 1 -1 # 刪除 alpha 列表索引為 0 的元素 OKredis> LRANGE alpha 0 -1 # "h" 被刪除了 1) "e" 2) "l" 3) "l" 4) "o"
五 集合類型 集合類型是無順序、唯一的、列表類型是有序不唯一。有序指的是index有序。 1 增加/刪除。SADD/SREM. # 添加單個元素redis> SADD bbs "discuz.net" (integer) 1# 添加重復元素redis> SADD bbs "discuz.net" (integer) 0# 添加多個元素redis> SADD bbs "tianya.cn" "groups.google.com" (integer) 2redis> SMEMBERS bbs 1) "discuz.net" 2) "groups.google.com" 3) "tianya.cn" 2 獲得集合所有元素.SMEMBERS key。 # key 不存在或集合為空redis> EXISTS not_exists_key (integer) 0redis> SMEMBERS not_exists_key (empty list or set)# 非空集合redis> SADD language Ruby Python Clojure (integer) 3redis> SMEMBERS language 1) "Python" 2) "Ruby" 3) "Clojure" 獲得元素個數SCARD redis> SADD tool pc printer phone (integer) 3redis> SCARD tool # 非空集合 (integer) 3redis> DEL tool (integer) 1redis> SCARD tool # 空集合 (integer) 0
3 判斷元素是否在集合中。SISMEMBER key member 4 集合間運算;SDIFF、SINTER(交集)、SUNION(并集) 5 從集合中彈出元素SPOP
六 有序集合類型(key- value類型) 1 與列表對比: (1 )列表是通過鏈表實現的獲取靠近兩端的數據速度極快,當元素增多之后,訪問中間元素會變慢。更適合"新鮮事"或者日志,這樣很少訪問中間元素的 (2)有序集合通過散列表和跳躍表實現的,所以即使讀取位于中間的元素也很快(logN) (3)列表中不能簡單調整元素的位置,有序集合可以(通過更改這個元素的分數) (4)有序集合比列表更耗內存。
2 增加元素Zadd key score member. # 添加單個元素redis> ZADD page_rank 10 google.com (integer) 1# 添加多個元素redis> ZADD page_rank 9 baidu.com 8 bing.com (integer) 2redis> ZRANGE page_rank 0 -1 WITHSCORES 1) "bing.com" 2) "8" 3) "baidu.com" 4) "9" 5) "google.com" 6) "10"# 添加已存在元素,且 score 值不變redis> ZADD page_rank 10 google.com (integer) 0redis> ZRANGE page_rank 0 -1 WITHSCORES # 沒有改變 1) "bing.com" 2) "8" 3) "baidu.com" 4) "9" 5) "google.com" 6) "10"# 添加已存在元素,但是改變 score 值redis> ZADD page_rank 6 bing.com (integer) 0redis> ZRANGE page_rank 0 -1 WITHSCORES # bing.com 元素的 score 值被改變 1) "bing.com" 2) "6" 3) "baidu.com" 4) "9" 5) "google.com" 6) "10"
3 獲得元素的分數。zscore key member 4 獲得排名在某個范圍的元素列表。
5獲得分數在某個范圍中的元素
6 增加某個元素的分數 zincrby key increment member。 7 集合中數量。zcard key
8 獲得指定分數范圍內的元素個數 zcount key min max。
9 刪除一個/多個元素 zrem key member。 10 按照排名范圍刪除元素 zremrangebyrank key start stop 11 按照分數范圍刪除元素:移除有序集?key?中,所有?score?值介于?min?和?max?之間(包括等于?min?或?max?)的成員。
redis> ZRANGE salary 0 -1 WITHSCORES # 顯示有序集內所有成員及其 score 值 1) "tom" 2) "2000" 3) "peter" 4) "3500" 5) "jack" 6) "5000"redis> ZREMRANGEBYSCORE salary 1500 3500 # 移除所有薪水在 1500 到 3500 內的員工 (integer) 2redis> ZRANGE salary 0 -1 WITHSCORES # 剩下的有序集成員 1) "jack" 2) "5000"
12 獲得元素的排名。zrank/zrevrank redis> GET db (nil)redis> SET db redis OK

總結

以上是生活随笔為你收集整理的Redis教程之基础-五种数据基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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