天天看點

redis基礎資料類型詳解

redis類型

  • redis一共分為五種基本資料類型:

    String、Hash、List、Set、ZSet

  • 檢視redis指令幫助

    help 指令名

String類型

String類型是包含很多種類型的特殊類型,并且是二進制安全的。比如序列化的對象進行存儲,比如一張圖檔進行二進制存儲,比如一個簡單的字元串,數值等。

set、get和del方法:

  • 設定值:

    set name redis

  • 取值:

    get name

  • 删除值:

    del name

使用setnx (not exist)

  • 表示如果不存在key進行設定,傳回1。存在就不需要設定了,傳回0
:> setnx name aa
(integer) 
           

使用setex (expired)

  • set color 10 red

    設定color的有效期為10秒,10秒傳回

    nil

    (在redis中

    nil

    表示

    null

    )

使用setrange 替換字元串

  • set mail [email protected]

    替換字元串

    setrange mail 5 abc

    (5表示從第幾位開始替換,不包含開始位置,後面跟上替換的字元串),如下圖:
    redis基礎資料類型詳解

一次性設定或者擷取多個值

mset、mget

方法

  • mset k1 123 k2 abc k3 ofg

  • mget k1 k2 k3

    redis基礎資料類型詳解

一次性擷取設定

getset

方法

  • getset k4 abcd

    先傳回k4的值然後設定k4的值為

    abcd

    redis基礎資料類型詳解

incr和decr方法

  • 對某個值進行遞增和遞減。

    incr age

    decr age

incrby和decrby方法

  • 對某個值指定長度的遞增和遞減。
  • incrby age 5

    增加5
  • decrby age 6

    減少6

append方法追加字元串

  • append key value

  • append name nosql

    為key為name的值追加nosql

strlen方法擷取key的長度

  • strleng key

    傳回該key的value的長度

Hash類型

Hash

類型是

String

類型的field和value的映射表,或者說一個

String

集合。它特别适合存儲對象,相比而言,将一個對象類型存儲在

Hash

類型裡要比存儲在String類型裡占用更少的記憶體空間,并友善存取整個對象。

設定和擷取Hash方法

  • 通過

    hset

    設定

    Hash

    類型的值。

    hset user id 1

    表示設定

    Hash

    的值為

    user

    ,裡面有

    key

    id

    value

    為1。
  • 通過

    hget

    擷取

    Hash

    類型的值。

    hget user id

    表示擷取

    Hash

    的值為

    user

    key

    id

    的值。
  • 也可以批量設定和擷取值。通過

    hmset user id 2 name zs age 20 sex man

    hmget user id name age sex

    redis基礎資料類型詳解
    redis基礎資料類型詳解

Hash類型的其他常用方法

  • hsetnx:這個和

    setnx

    類似,表示如果不存在就設定,存在就不設定。
  • hincrby:集合遞增,類似于

    incrby

  • hexists:是否存在key,如果存在傳回值,不存在傳回0
  • hlen:傳回hash集合裡面的所有鍵數值。
  • hdel:删除指定hash中的字段。
  • hkeys:傳回hash中的所有key。
  • hvales:傳回hash中的所有value。
  • hgetall:傳回hash裡的所有key和value。
    redis基礎資料類型詳解

List類型

List

類型是一個連結清單結構的集合,其主要功能有push、pop、擷取元素等。更加具體來說,List類型是一個雙連結清單的結構,我們可以通過相關操作在集合的頭部和尾部進行操作,List的可以作為棧,也可以作為隊列。

lpush和lrange方法

  • lpush

    從頭部加入元素(棧)先進後出,傳回集合中元素個數。

    lpush list hello

    向名為

    list

    集合中添加

    hello

  • lrange

    擷取棧的元素,傳回集合中的元素。

    lrange list 0 -1

    擷取

    list

    集合全部元素。
    redis基礎資料類型詳解

rpush方法

  • rpush

    方法從尾部加入元素,先進先出。

    rpush list2 hello

    向集合

    list2

    中添加

    hello

  • lrang

    擷取集合中的元素。
    redis基礎資料類型詳解

linsert方法

  • 插入元素。

    linsert num before three two

    redis基礎資料類型詳解

lset方法

  • 将指定下标的元素替換掉。從0開始
    redis基礎資料類型詳解

lrem方法

  • 删除元素,傳回删除元素個數
    redis基礎資料類型詳解

ltrim方法

  • 保留指定範圍内的元素,截取集合
    redis基礎資料類型詳解

lpop方法

  • 從list的頭部删除元素,并傳回删除元素
    redis基礎資料類型詳解

rpop方法

  • 從list的尾部删除元素,并傳回删除元素
    redis基礎資料類型詳解

Set類型

Set集合是String類型的無序集合,Set是通過HashTable實作的,對集合我們可以取交集、并集、差集。

sadd方法

  • 向名稱為key的set中添加元素。

    sadd set1 abc

    也可以批量添加

    sadd set1 abc bdf

  • set集合不允許添加重複元素。
    redis基礎資料類型詳解

smembers方法

  • 檢視set集合元素。
    redis基礎資料類型詳解

srem方法

  • 删除set集合元素
    redis基礎資料類型詳解

spop方法

  • 随機傳回删除的member
    redis基礎資料類型詳解

sdiff方法

  • 傳回兩個集合的不同元素,哪個集合在前面就以哪個集合為标準。
    redis基礎資料類型詳解

sdiffstore方法

  • 将傳回的不同元素存儲到另一個集合裡。
    redis基礎資料類型詳解

sinter方法

  • 兩個集合取交集。
    redis基礎資料類型詳解

sinterstore方法

  • 傳回交集結果,存儲到另一個集合中
    redis基礎資料類型詳解

sunion方法

  • 取并集。
    redis基礎資料類型詳解

sunionstore方法

  • 取并集,并存儲到另一個集合中
    redis基礎資料類型詳解

smove方法

  • 從一個set集合移動到另一個set集合,相當于剪切複制。
    redis基礎資料類型詳解

scard方法

  • 傳回集合的元素個數,

    scard 集合名

sismember方法

  • 判斷某元素是否為集合中的元素,傳回1代表是集合中的元素,0代表不是
    redis基礎資料類型詳解

srandmember方法

  • 随機傳回一個元素
    redis基礎資料類型詳解

zset集合類型

set集合的更新版,集合是有序的。

zadd方法

  • 向有序集合中添加一個元素,該元素如果存在,則更新順序。在重複插入的時候,會根據順序屬性更新。
    redis基礎資料類型詳解

zrange方法

  • 檢視zset集合資料。
    redis基礎資料類型詳解

zrem方法

  • 删除名稱為key的zset中的元素member
    redis基礎資料類型詳解

zincrby方法

  • 以指定值去自增或自減,用法和incrby類似

zrangebyscore方法

  • 找到指定區間範圍的資料進行傳回。
    redis基礎資料類型詳解

zremrangebyrank方法

  • 删除索引範圍的member
    redis基礎資料類型詳解

zremrangebyscore方法

  • 删除指定序号,通過分數範圍删除,包含頭、包含尾
    redis基礎資料類型詳解

zrank方法

  • 傳回排序序号,從0開始
    redis基礎資料類型詳解

zrevrank方法

  • 傳回排序索引,從大到小的順序,從0開始
    redis基礎資料類型詳解

zrangebyscore 方法

  • 找到指定區間的資料并傳回
    redis基礎資料類型詳解
  • 通過上圖我們可以看出

    zrange

    zrangebyscore

    方法的差別是,一個通過索引範圍查找,一個通過分數範圍查找

zcard方法

  • 傳回集合中所有元素的個數
    redis基礎資料類型詳解

zcount方法

  • 傳回集合中score在給定區間的數量
    redis基礎資料類型詳解

繼續閱讀