Redis-第五章節-8種資料型別

Tsing發表於2021-01-24

目錄

  • 一、Redis對key的操作
  • 二、五種資料型別
    • String型別
    • List(集合)
    • Set(集合)
    • Hash(雜湊)
    • Zset(有序集合)
  • 三、三種特殊資料型別
    • geospatial(地理位置)
    • hyperloglog(優點:佔用記憶體小)
    • Bitmap(點陣圖)

一、Redis對key的操作

  • 判斷key是否存在:exists key_name
  • 設定key的過期時間:expire key_name [過期的時間值](number型別)
  • 檢視key的過期時間:ttl key_name
  • 獲取所有的key: keys *

二、五種資料型別

String(字串)

字串型別操作:

  • 設定值:set key_name value
  • 獲取值:get key_name
  • 追加字串,如果當前的key不存在就會建立一個新的key: append key_name value
  • 獲取字串長度:strlen key_name
  • 擷取字串:getrange key_name [start index] [end index]
  • 指定的字串覆蓋給定key所儲存的字串值,覆蓋的位置從偏移量 offset(數字型別) 開始:setrange key_name offset value
  • 為指定的key設定值及其過期時間,如果key已經存在,setex命令將會替換舊的值: setex key_name [expiration time] value
  • 先獲取值再設定值:getset key_name value

數字型別操作:

  • number數字型別自增1:incr key_name
  • number數字型別減1:decr key_name
  • 增加指定的值:incrby key_name [具體的值]number型別
  • 減少指定的值:decrby key_name key_name [具體的值]number型別

批量操作:

  • 批量設定值:mset key_name1 value1 key_name2 value2 key_name3 value3
  • 批量獲取值:
    • 方式1: mget key_name1 key_name2 key_name3
    • 方式2:msetnx key_name1 key_name2 key_name3 //這個是原子性操作,要麼全部成功,要麼全部失敗。

List(集合)

  • 設定值:
    • 左邊:lpush key_name value
    • 右邊:rpush key_name value
  • 獲取值:
    • 左邊:
      • lrange key_name [start index] [end index]
      • lrange key_name 0 -1 獲取所有的元素
  • 移除資料:
    • 左邊:lprop key_name
    • 右邊:rprop key_name
  • 根據引數count的值,移除列表中與引數value相等的元素:
    • lrem key_name [count] value
      • count > 0:從表頭開始向表尾搜尋,移除與value相等的元素,數量為count。
      • count < 0:從表尾開始向表頭搜尋,移除與value相等的元素,數量為count的絕對值。
      • count = 0: 移除表中所有與value相等的值。
  • 根據索引獲取元素:lindex key_name [index]
  • 獲取集合的長度:llen key_name
  • 替換列表中指定下標的值,如果不存在就會報錯:lset key_name [index] value
  • 在列表的元素前或者後插入元素。當指定元素不存在於列表中時,不執行任何操作。當列表不存在時,被視為空列表,不執行任何操作。如果 key 不是列表型別,返回一個錯誤: linsert key_name [before] || [after] oldvalue newvalue

Set(集合)

  • 設定值:sadd key_name value
  • 獲取值:smembers key_name
  • 隨機從集合中抽取資料:srandmember key_name
  • 隨機從集合中抽取指定個數的資料:srandmemer key_name [number]
  • 移除元素:srem key_name value
  • 用於移除集合中的指定key的一個或多個隨機元素,移除後會返回移除的元素: spop key_name
  • 判斷值是否在集合中:sismember key_name value
  • 獲取集合中的元素的個數:scard key_name
  • 集合之間操作:
    • 將值移動到另一個集合中:smove oldlist newlist value
    • 差集:sidff oldlist newlist
    • 交集:sinter oldlist newlist
    • 並集:sunion oldlist newlist

Hash(雜湊)

  • 設定值:
    • 方式1:hset key_name filed1 value
    • 方式2:hsetnx key_name filed1 value //如果不存在則可以設定
    • 方式3:hsetnx key_name filed1 value //如果存在不能設定
  • 獲取值:hget key_name filed1
  • 獲取所有值:hgetall key_name
  • 刪除集合中某一個欄位的值:hdel key_name filed1
  • 獲取集合中的元素的個數:hlen key_name
  • 判斷key是否存在:hexists key_name
  • 獲取所有的filed: hkeys key_name
  • 獲取所有的值:hvals key_name
  • 自增:hincrby key_name filed1 1
  • 自減:decrby key_name filed1 1
  • 批量操作:
    • 設定值:hmset key_name filed1 value1 filed2 value2
    • 獲取值:hmget key_name filed1 filed2

Zset(有序集合)

  • 設定值(number:排序的標識位,這個可以重複):zadd key_name [number] value
  • 設定多個值(number:排序的標識位,這個可以重複): zadd key_name [number] value2 [number] value3
  • 獲取值:zrange key_name 0 -1
  • 排序:zrangebysocre key_name -inf +inf
  • 移除元素:zrem key_name value
  • 獲取集合中元素的數量:zcard key_name
  • 獲取指定區間的成員的數量:zcount key_name [start index] [end index]

三、三種特殊資料型別

geospatial(地理位置)

  • 新增城市的位置:geoadd china:city 116.40 39.90 beijing
  • 獲取指定城市的經緯度:geopos china:city beijing chongqing
  • 獲取兩人之間的距離:geodist china:city beijing shanghai km
  • 獲取指定半徑範圍之內的座標:georadius china:city 110 30 1000 km
  • 根據元素尋找元素:georeadiusbymember china:city beijing 1000 km

hyperloglog(優點:佔用記憶體小)

  • 設定值:PFadd key_name value1 value2 value3 value4 value5 value6
  • 獲取數量:PFCOUNT key_name
  • 合併兩個集合:PFMERGE 新集合 集合2 集合3

Bitmap(點陣圖)

  • 記錄週一到週五的打卡:setbit sign 0 1 // 0是周幾 1 是否打卡
  • 檢視某一天是否打卡:gitbit sign 3
  • 統計打卡的天數:bitcout sign

相關文章