Redis之數據操作


Redis數據結構

  • redis是key-value的數據結構,每條數據都是⼀個鍵值對
  • 鍵的類型是字符串
  • 注意:鍵不能重復

數據結構

值的類型分為五種:

  • 字符串string
  • 哈希hash
  • 列表list
  • 集合set
  • 有序集合zset

數據操作行為

  • 保存
  • 修改
  • 獲取
  • 刪除

中⽂官⽹查看命令⽂檔 http://redis.cn/commands.html

 

string類型

字符串類型是Redis中最為基礎的數據存儲類型,它在Redis中是二進制安全的,這便意味着該類型可以接受任何格式的數據,如JPEG圖像數據或Json對象描述信息等。在Redis中字符串類型的Value最多可以容納的數據長度是512M。

保存

如果設置的鍵不存在則為添加,如果設置的鍵已經存在則修改

設置鍵值

set key value

例1:設置鍵為name值為itcast的數據

set name yifchan

 

設置鍵值及過期時間,以秒為單位

setex key seconds value

例2:設置鍵為aa值為aa過期時間為3秒的數據

setex aa 3 aa

 

設置多個鍵值

mset key1 value1 key2 value2 ...

例3:設置鍵為'a1'值為'python'、鍵為'a2'值為'java'、鍵為'a3'值為'c'

mset a1 python a2 java a3 c

 

追加值

append key value

例4:向鍵為a1中追加值' haha'

append 'a1' 'haha'

 

獲取

獲取:根據鍵獲取值,如果不存在此鍵則返回nil

get key

例5:獲取鍵'name'的值

get 'name'

 

根據多個鍵獲取多個值

mget key1 key2 ...

例6:獲取鍵a1、a2、a3'的值

mget a1 a2 a3

 

刪除
詳⻅下節鍵的操作,刪除鍵時會將值刪除

 

鍵命令

查找鍵,參數⽀持正則表達式

keys pattern

例1:查看所有鍵

keys *

例2:查看名稱中包含a的鍵

keys 'a*'

 

判斷鍵是否存在,如果存在返回1,不存在返回0

exists key1

例3:判斷鍵a1是否存在

exists a1

 

查看鍵對應的value的類型

type key

例4:查看鍵a1的值類型,為redis⽀持的五種類型中的⼀種

type a1

 

刪除鍵及對應的值

del key1 key2 ...

例5:刪除鍵a2、a3

del a2 a3

 

設置過期時間,以秒為單位

如果沒有指定過期時間則⼀直存在,直到使⽤DEL移除

expire key seconds

例6:設置鍵'a1'的過期時間為3秒

expire 'a1' 3

 

查看有效時間,以秒為單位

ttl key

例7:查看鍵'bb'的有效時間

ttl bb

 

 

hash類型

  • hash⽤於存儲對象,對象的結構為屬性、值
  • 值的類型為string

增加、修改

設置單個屬性

hset key field value

例1:設置鍵 user的屬性name為itheima

hset user name itheima

可能報錯

MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

Redis被配置為保存數據庫快照,但它目前不能持久化到硬盤。用來修改集合數據的命令不能用

原因:

強制關閉Redis快照導致不能持久化。 解決方案:

運行 config set stop-writes-on-bgsave-error no 命令后,關閉配置項stop-writes-on-bgsave-error解決該問題。

 

設置多個屬性

hmset key field1 value1 field2 value2 ...

例2:設置鍵u2的屬性name為itcast、屬性age為11

hmset u2 name itcast age 11

 

獲取

獲取指定鍵所有的屬性

hkeys key

例3:獲取鍵u2的所有屬性

hkeys u2

 

獲取⼀個屬性的值

hget key field

例4:獲取鍵u2屬性'name'的值

hget u2 'name'

 

獲取多個屬性的值

hmget key field1 field2 ...

例5:獲取鍵u2屬性'name'、'age的值

hmget u2 name age

 

獲取所有屬性的值

hvals key

例6:獲取鍵'u2'所有屬性的值

hvals u2

 

刪除

刪除整個hash鍵及值,使⽤del命令
刪除屬性,屬性對應的值會被⼀起刪除

hdel key field1 field2 ...

例7:刪除鍵'u2'的屬性'age'

hdel u2 age

 

 

list類型

  • 列表的元素類型為string
  • 按照插⼊順序排序

增加

在左側插⼊數據

lpush key value1 value2 ...

例1:從鍵為'a1'的列表左側加⼊數據a 、 b 、c

lpush a1 a b c

 

在右側插⼊數據

rpush key value1 value2 ...

例2:從鍵為'a1'的列表右側加⼊數據0 1

rpush a1 0 1

 

在指定元素的前或后插⼊新元素

linsert key before或after 現有元素 新元素

例3:在鍵為'a1'的列表中元素'b'前加⼊'3'

linsert a1 before b 3

 

獲取

返回列表⾥指定范圍內的元素

  • start、stop為元素的下標索引
  • 索引從左側開始,第⼀個元素為0
  • 索引可以是負數,表示從尾部開始計數,如-1表示最后⼀個元素
lrange key start stop

例4:獲取鍵為'a1'的列表所有元素

lrange a1 0 -1

 

設置指定索引位置的元素值

索引從左側開始,第⼀個元素為0
索引可以是負數,表示尾部開始計數,如-1表示最后⼀個元素

lset key index value

例5:修改鍵為'a1'的列表中下標為1的元素值為'z'

lset a 1 z

 

刪除

刪除指定元素

將列表中前count次出現的值為value的元素移除

  • count > 0: 從頭往尾移除
  • count < 0: 從尾往頭移除
  • count = 0: 移除所有
lrem key count value

例6.1:向列表'a2'中加⼊元素'a'、'b'、'a'、'b'、'a'、'b'

lpush a2 a b a b a b

例6.2:從'a2'列表右側開始刪除2個'b'

lrem a2 -2 b

例6.3:查看列表'py12'的所有元素

lrange a2 0 -1

 

set類型

  • ⽆序集合
  • 元素為string類型
  • 元素具有唯⼀性,不重復
  • 說明:對於集合沒有修改操作

增加

添加元素

sadd key member1 member2 ...

例1:向鍵'a3'的集合中添加元素'zhangsan'、'lisi'、'wangwu'

sadd a3 zhangsan sili wangwu

 

獲取

返回所有的元素

smembers key

例2:獲取鍵'a3'的集合中所有元素

smembers a3

 

刪除

刪除指定元素

srem key

例3:刪除鍵'a3'的集合中元素'wangwu'

srem a3 wangwu

 

zset類型

  • sorted set,有序集合
  • 元素為string類型
  • 元素具有唯⼀性,不重復
  • 每個元素都會關聯⼀個double類型的score,表示權重,通過權重將元素從⼩到⼤排序
  • 說明:沒有修改操作

增加

添加

zadd key score1 member1 score2 member2 ...

例1:向鍵'a4'的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',權重分別為4、5、6、3

zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

 

獲取

返回指定范圍內的元素

  • start、stop為元素的下標索引
  • 索引從左側開始,第⼀個元素為0
  • 索引可以是負數,表示從尾部開始計數,如-1表示最后⼀個元素
zrange key start stop

例2:獲取鍵'a4'的集合中所有元素

zrange a4 0 -1

 

返回score值在min和max之間的成員

zrangebyscore key min max

例3:獲取鍵'a4'的集合中權限值在5和6之間的成員

zrangebyscore a4 5 6

 

返回成員member的score值

zscore key member

例4:獲取鍵'a4'的集合中元素'zhangsan'的權重

zscore a4 zhangsan

 

刪除

刪除指定元素

zrem key member1 member2 ...

例5:刪除集合'a4'中元素'zhangsan'

zrem a4 zhangsan

 

刪除權重在指定范圍的元素

zremrangebyscore key min max

例6:刪除集合'a4'中權限在5、6之間的元素

zremrangebyscore a4 5 6

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM