2345網(wǎng)址導(dǎo)航主頁長沙關(guān)鍵詞優(yōu)化新行情報(bào)價(jià)
📑前言
本文主要是【Redis】——Redis基本操作及使用的文章,如果有什么需要改進(jìn)的地方還請(qǐng)大佬指出??
🎬作者簡介:大家好,我是聽風(fēng)與他🥇
??博客首頁:CSDN主頁聽風(fēng)與他
🌄每日一句:狠狠沉淀,頂峰相見
目錄
- 📑前言
- Redis基本操作及使用
- 什么是Redis
- 關(guān)系型數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫的區(qū)別
- 全局key操作
- 查看所有的key
- 刪除
- 查看key是否存在,存在返回1,不存在返回0
- 查看key類型
- 運(yùn)算
- Redis五種數(shù)據(jù)類型及操作
- value :都是字符串類型的(可加引號(hào)也可不加)
- string
- 設(shè)置
- 獲取
- 查看過期時(shí)間
- 設(shè)置過期時(shí)間
- 追加
- redis里面所有的value,都是字符串類型的
- 設(shè)置/獲取 多個(gè)
- list
- 添加
- 查看
- 獲得list的元素個(gè)數(shù)
- 設(shè)置,修改數(shù)據(jù)
- 刪除
- hash
- 設(shè)置
- 獲取
- 刪除
- 獲取全部field value
- 獲取所有的field
- 獲取所有的value
- 獲取field的個(gè)數(shù)
- set集合
- 設(shè)置
- 獲取
- 刪除
- 移動(dòng)一個(gè)集合的值到另一個(gè)集合
- 判斷集合存在某個(gè)值
- 交集
- 并集
- 差集
- zset
- 設(shè)置
- 獲取
- 刪除
- 索引
- zcard 查看有序集合元素?cái)?shù)
- zrangebyscore 返回集合中 score 在給定區(qū)間的元素
- zcount 返回集合中 score 在給定區(qū)間的數(shù)量
- zscore : 查看score值
- zremrangebyrank : 刪除集合中排名在給定區(qū)間的元素(正向)
- zremrangebyscore : 刪除集合中 score 在給定區(qū)間的元素
- Redis發(fā)布和訂閱
- 📑文章末尾
Redis基本操作及使用
什么是Redis
Redis是由意大利人Salvatore Sanfilippo(網(wǎng)名:antirez)開發(fā)的一款內(nèi)存高速緩存數(shù)據(jù)庫。Redis全稱為:Remote Dictionary Server,該軟件使用C語言編寫,Redis是一個(gè)key-value存儲(chǔ)系統(tǒng),它支持豐富的數(shù)據(jù)類型,如:string、list、set、zset(sorted set)、hash。
redis是一種nosql數(shù)據(jù)庫,他的數(shù)據(jù)是保存在內(nèi)存中,同時(shí)redis可以定時(shí)把內(nèi)存數(shù)據(jù)同步到磁盤,即可以將數(shù)據(jù)持久化,還提供了多個(gè)語言的API,操作比較方便
- Redis特點(diǎn):
Redis以內(nèi)存作為數(shù)據(jù)存儲(chǔ)介質(zhì),所以讀寫數(shù)據(jù)的效率極高,遠(yuǎn)遠(yuǎn)超過數(shù)據(jù)庫。 - Redis應(yīng)用場(chǎng)景:
因?yàn)镽edis交換數(shù)據(jù)快,所以在服務(wù)器中常用來存儲(chǔ)一些需要頻繁調(diào)取的數(shù)據(jù),這樣可以大大節(jié)省系統(tǒng)直接讀取磁盤來獲得數(shù)據(jù)的I/O開銷,更重要的是可以極大提升速度。
將這種熱點(diǎn)數(shù)據(jù)存到Redis(內(nèi)存)中,要用的時(shí)候,直接從內(nèi)存取,極大的提高了速度和節(jié)約了服務(wù)器的開銷。
關(guān)系型數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫的區(qū)別
- 關(guān)系型數(shù)據(jù)庫
表和表之間存在的關(guān)系 - 非關(guān)系型數(shù)據(jù)庫
不存在表的這種概念,redis是鍵值對(duì)數(shù)據(jù)庫,通過key查找value 所以key是唯一的。
全局key操作
- 對(duì)redis五個(gè)數(shù)據(jù)類型都適用的命令
查看所有的key
keys *
keys n*
刪除
del key 例: (del name)
查看key是否存在,存在返回1,不存在返回0
exists key
查看key類型
type key
運(yùn)算
set num 1 # 自動(dòng)識(shí)別,字符串里面的 整數(shù)# +1incr key 例 (incr num)# -1decr key 例 (decr num)# +整數(shù)incrby key increment 例 (incrby num 50)# -整數(shù)decrby key increment 例 (decrby num 50)
Redis五種數(shù)據(jù)類型及操作
- string 字符串
- list 列表
- hash 哈希
- set 集合
- sorted sets 有序集合
key 有5種數(shù)據(jù)類型:string、list、set、zset(sorted set)、hash。
value :都是字符串類型的(可加引號(hào)也可不加)
string
string是redis最基本的類型,一個(gè)key對(duì)應(yīng)一個(gè)value
設(shè)置
set key value 例:(set name 'ppx')
獲取
get key 例:(get name)
# key是唯一的,不能用同一個(gè)key 不然就會(huì)覆蓋
查看過期時(shí)間
# -1表示永久 -2表示 不存在
ttl key 例: (ttl name)
設(shè)置過期時(shí)間
# 給已經(jīng)存在的key ,設(shè)置過期時(shí)間
expire key seconds 例: (expire name 20)#設(shè)置key的同時(shí),設(shè)置過期時(shí)間
set key value ex seconds 例: (set age 18 ex 20)
或
setex key seconds value 例:(setex sex 20 '男')
追加
# 給已有的value,再添加新的值
# append key value
例
append name love
#get name
redis里面所有的value,都是字符串類型的
設(shè)置/獲取 多個(gè)
# 設(shè)置多個(gè) string
mset key value key value ...#獲取多個(gè)
mget key key key ...
例
mget username password name
list
- List類型是一個(gè)字符串列表,可以在列頭或列尾添加/刪除數(shù)據(jù),在插入數(shù)據(jù)時(shí),如果該鍵不存在,redis將為該鍵創(chuàng)建一個(gè)。
添加
#lpush 左添加 (棧) 先進(jìn)后出
lpush key value #例: lpush mylist a b c d#rpush 右添加 (隊(duì)列)
rpush key value #例: rpush mylist a b c d
查看
# lrange key start stop ,查看索引范圍內(nèi)元素的值
例 查看所有
lrange mylist 0 -1#查看位與lindex位置上的元素, 返回列表中元素的值。index從0開始,當(dāng)index超出索引時(shí)返回null
lindex key index #例: lindex mylist 3
獲得list的元素個(gè)數(shù)
llen key #例 llen mylist
設(shè)置,修改數(shù)據(jù)
#指定索引號(hào)進(jìn)行修改
lset key index value
刪除
- lpop 刪除左邊第一個(gè)lpop key #例 lpop my_rlist- rpop 刪除右邊第一個(gè)rpop key #例 rpop my_list
- lrem 刪除指定rpush test_list a a b b c d e a d f m c#lrem key count value#count > 0 從左往右 刪除數(shù)量為count的value例 : lrem test_list 2 a#count = 0 刪除所有的 value例 : lrem test_list 0 a#count < 0 從右往左 刪除數(shù)量為count的value例 : lrem test_list -1 b
hash
- 是一個(gè)鍵值(key=>value)對(duì)集合。是string 類型的 field 和 value 的映射表,hash 特別適合用于存儲(chǔ)對(duì)象, field 域, value 值
設(shè)置
# hset key field value#將field-value設(shè)置到hash表中,若key不存在會(huì)新建hash表再賦值,已存在則會(huì)覆蓋;例 user { name:jianeng}hset user name jianeng#設(shè)置多個(gè)#hmset key field value [field value]例 user{name:jianeng , age:18, sex:male }hmset user name jianeng age 18 sex male
獲取
# hget key field例hget user name#獲取多個(gè)# hmget key field field例hmget user name age
刪除
# hdel key field例hdel user name
獲取全部field value
# hgetall key 例 itmeshgetall user
獲取所有的field
# hkeys key例 keyshkeys user
獲取所有的value
# hvals key 例 values hvals user
獲取field的個(gè)數(shù)
# hlen key例 hlen user
set集合
- 元素為string類型
- 無序集合
- 元素具有唯一性,不重復(fù)
設(shè)置
# sadd key value [value] (唯一,無序)#將一個(gè)或多個(gè)member元素加入到集合key中,若member已存在那么會(huì)忽略此元素,例sadd my_set m n b v c x z b
獲取
# smembers key例smembers my_set
刪除
- srem指定刪除# srem key member例srem my_set c- spop隨機(jī)刪除# spop key例spop my_set
移動(dòng)一個(gè)集合的值到另一個(gè)集合
# smove oldkey newkey member例smove my_set my_set2 z
判斷集合存在某個(gè)值
# sismember key value例sismember my_set2 b
交集
# sinter key1 key2 ..例sinter my_set my_set2把 key1 key2的交集合并到newkey# sinterstore newkey key1 key2例sinterstore new_set my_set my_set2
并集
# sunion key1 key2 ...例sunion my_set my_set2把 key1 key2的并集合并到newkey# sunionstore newkey key1 key2例sunionstore new_set2 my_set my_set2
差集
# sdiff key1 key2sdiff my_set my_set2把 key1 key2的差集合并到newkey# sdiffstore newkey key1 key2例sdiffstore new_set3 my_set my_set2
- 獲取集合個(gè)數(shù)# scard key例scard my_set
- 隨機(jī)返回一個(gè)# srandmember key例srandmember my_set
zset
類似于Set,不同的是Sorted中的每個(gè)成員都分配了一個(gè)分?jǐn)?shù)(Score)用于對(duì)其中的成員進(jìn)行排序(升序)。
zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。
設(shè)置
# zadd key score member例zadd my_zset 1 'one'zadd my_zset 2 'two'zadd my_zset 3 'three'zadd my_zset 4 'four'zadd my_zset 5 'five'
獲取
- zrange正序#zrange key start stop (withscores)zrange my_zset 0 -1 withscores- zrevrange倒序#zrevrange key start stopzrevrange my_zset 0 -1 withscores
刪除
#zrem key memberzrem my_zset two
索引
- zrank正序# zrank key member例zrank my_zset three- zrevrank反序# zrevrank key member例zrevrank my_zset three
zcard 查看有序集合元素?cái)?shù)
# zcard key例zcard my_zset
zrangebyscore 返回集合中 score 在給定區(qū)間的元素
# zrange my_zset 0 -1 withscoreszrangebyscore my_zset 2 3 withscores#返回了 score 在 2~3 區(qū)間的元素
zcount 返回集合中 score 在給定區(qū)間的數(shù)量
# zcount key min max例zcount my_zset 2 3
zscore : 查看score值
# zscore key member例zscore my_zset two
zremrangebyrank : 刪除集合中排名在給定區(qū)間的元素(正向)
# zrange my_zset 0 -1 withscoreszremrangebyrank my_zset 1 3
zremrangebyscore : 刪除集合中 score 在給定區(qū)間的元素
# zrange my_zset 0 -1 withscoreszremrangebyscore my_zset 3 5
Redis發(fā)布和訂閱
#發(fā)布
publish 頻道 消息# 訂閱
subscribe 頻道