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
127.0.0.1:6379> setnx name aa
(integer) 0

使用setex (expired)

  • set color 10 red 設置color的有效期爲10秒,10秒返回 nil (在redis中nil表示null)

使用setrange 替換字符串

  • set mail [email protected] 替換字符串 setrange mail 5 abc (5表示從第幾位開始替換,不包含開始位置,後面跟上替換的字符串),如下圖:
    setrange結果

一次性設置或者獲取多個值mset、mget 方法

  • mset k1 123 k2 abc k3 ofg
  • mget k1 k2 k3
    mset和mget

一次性獲取設置getset方法

  • getset k4 abcd 先返回k4的值然後設置k4的值爲 abcd
    setget

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,裏面有keyidvalue爲1。
  • 通過 hget 獲取Hash類型的值。hget user id 表示獲取Hash的值爲 userkeyid的值。
  • 也可以批量設置和獲取值。通過hmset user id 2 name zs age 20 sex manhmget user id name age sex
    hash類型的hset和hget
    hash中的hmset和hmget

Hash類型的其他常用方法

  • hsetnx:這個和setnx類似,表示如果不存在就設置,存在就不設置。
  • hincrby:集合遞增,類似於incrby
  • hexists:是否存在key,如果存在返回值,不存在返回0
  • hlen:返回hash集合裏面的所有鍵數值。
  • hdel:刪除指定hash中的字段。
  • hkeys:返回hash中的所有key。
  • hvales:返回hash中的所有value。
  • hgetall:返回hash裏的所有key和value。
    hash其他命令

List類型

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

lpush和lrange方法

  • lpush從頭部加入元素(棧)先進後出,返回集合中元素個數。lpush list hello 向名爲list集合中添加hello
  • lrange獲取棧的元素,返回集合中的元素。lrange list 0 -1 獲取list 集合全部元素。
    list集合的lpush和lrange方法

rpush方法

  • rpush 方法從尾部加入元素,先進先出。rpush list2 hello 向集合list2中添加hello
  • lrang獲取集合中的元素。
    List類型中的rpush方法

linsert方法

  • 插入元素。linsert num before three two
    list集合linsert

lset方法

  • 將指定下標的元素替換掉。從0開始
    list類型的lset方法

lrem方法

  • 刪除元素,返回刪除元素個數
    list類型的lrem方法

ltrim方法

  • 保留指定範圍內的元素,截取集合
    list類型的ltrim方法

lpop方法

  • 從list的頭部刪除元素,並返回刪除元素
    list集合的lpop方法

rpop方法

  • 從list的尾部刪除元素,並返回刪除元素
    List類型中的rpop方法

Set類型

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

sadd方法

  • 向名稱爲key的set中添加元素。sadd set1 abc 也可以批量添加 sadd set1 abc bdf
  • set集合不允許添加重複元素。
    set集合的sadd方法

smembers方法

  • 查看set集合元素。
    set集合的smembers方法

srem方法

  • 刪除set集合元素
    set集合的srem方法

spop方法

  • 隨機返回刪除的member
    set集合的spop方法

sdiff方法

  • 返回兩個集合的不同元素,哪個集合在前面就以哪個集合爲標準。
    set集合的sdiff方法

sdiffstore方法

  • 將返回的不同元素存儲到另一個集合裏。
    set集合的sdiffstore方法

sinter方法

  • 兩個集合取交集。
    set集合的sinter方法

sinterstore方法

  • 返回交集結果,存儲到另一個集合中
    set集合的sinterstore方法

sunion方法

  • 取並集。
    set集合的sunion方法

sunionstore方法

  • 取並集,並存儲到另一個集合中
    set集合的sunionstore方法

smove方法

  • 從一個set集合移動到另一個set集合,相當於剪切複製。
    set集合的smove方法.

scard方法

  • 返回集合的元素個數,scard 集合名

sismember方法

  • 判斷某元素是否爲集合中的元素,返回1代表是集合中的元素,0代表不是
    set集合的sismember方法

srandmember方法

  • 隨機返回一個元素
    set集合的srandmember方法

zset集合類型

set集合的升級版,集合是有序的。

zadd方法

  • 向有序集合中添加一個元素,該元素如果存在,則更新順序。在重複插入的時候,會根據順序屬性更新。
    zset集合的zadd方法.jpg

zrange方法

  • 查看zset集合數據。
    zset集合的zadd方法.jpg

zrem方法

  • 刪除名稱爲key的zset中的元素member
    zset集合的zadd方法.jpg

zincrby方法

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

zrangebyscore方法

  • 找到指定區間範圍的數據進行返回。
    zset集合的zadd方法.jpg

zremrangebyrank方法

  • 刪除索引範圍的member
    zset集合的zadd方法.jpg

zremrangebyscore方法

  • 刪除指定序號,通過分數範圍刪除,包含頭、包含尾
    zset集合的zremrangebyscore方法

zrank方法

  • 返回排序序號,從0開始
    zset集合的zrank方法

zrevrank方法

  • 返回排序索引,從大到小的順序,從0開始
    zset集合的zrevrank方法

zrangebyscore 方法

  • 找到指定區間的數據並返回
  • 通過上圖我們可以看出zrangezrangebyscore 方法的區別是,一個通過索引範圍查找,一個通過分數範圍查找

zcard方法

  • 返回集合中所有元素的個數
    zset集合的zcard方法

zcount方法

  • 返回集合中score在給定區間的數量
    zset集合的zcount方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章