婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解Redis基本命令與使用場景

詳解Redis基本命令與使用場景

熱門標簽:超呼電話機器人 宿遷便宜外呼系統平臺 鄭州人工智能電銷機器人系統 魔獸2青云地圖標注 十堰營銷電銷機器人哪家便宜 北京400電話辦理收費標準 貴州電銷卡外呼系統 山東外呼銷售系統招商 日本中國地圖標注

Redis和Memcached對比

其中有一個比較重要的區別是關于其提供的數據結構區別

Memcached

在其數據結構中僅使用字符串和整數。因此,您保存的所有內容都可以是字符串或整數。它很復雜,因為對于整數,您可以做的唯一數據操作是添加或減去它們。如果需要保存數組或對象,則必須先將它們序列化然后保存。要閱讀它們,您需要取消序列化。

Redis

具有更強大的數據結構,它不僅可以處理字符串整數,還可以處理二進制安全字符串,二進制安全字符串列表,二進制安全字符串集和有序集。

關于Redis的數據結構:https://zhuanlan.zhihu.com/p/270592490

基本命令

# 如果k1的值設置過,就不設置,如果k1的值沒有設置,才會設置k1的值為hello

# msetnx 同理

set k1 hello nx

# 如果k2沒設置,就不能設置k2的值為hello,如果k2的值設置過,才能把他設置過hello

set k2 hello xx

# 設置多個值,其中把k1設置xx,把k2設置為33

mset k1 xx k2 33

# 拼接字符串

APPEND k1 " world"

# 范圍查找(從0開始)

GETRANGE k1 0 1

# 范圍查找(逆序,最右邊編號從-1開始)

# 所以0,-1 就是拿到整個字符串

GETRANGE k1 0 -1

# 把k1字符串的第1個(從第0個位置開始)用xxx開始替換后續的字符

# 如果k1是hello,那么執行完下面的語句,k1會被設置為:hxxxo

SETRANGE k1 1 xxx

# 獲取k1字符串的長度

STRLEN k1

# 獲取數據類型

TYPE k1

# 查詢某個命令的使用,如下命令,就是查詢SET命令如何使用

help SET

# k1的值+1

INCR k1

# k1的值+22

INCRBY k1 22

# k1的值-1

DECR k1

# k1的值-22

DECRBY k1 22

# k1的值+0.5

INCRBYFLOAT k1 0.5

# 可以使用--raw選項在終端上強制進行原始輸出

127.0.0.1:6379> set k3 中

OK

127.0.0.1:6379> get k3

"\xe4\xb8\xad"

127.0.0.1:6379> exit

[root@node1 utils]# redis-cli --raw

127.0.0.1:6379> get k3

# 獲取k1的值,然后把k1的值設置為hello

GETSET k1 hello

# 設置k1的值為a,如果要把k1的值變為b,也可以通過setbit操作

# 也就是將 01100001 變成 01100010 (a的ASCII碼是97,b的ASCII碼是98),也就是將'a'中的offset 6從0變成1,將offset 7 從1變成0  (從0開始算)

set k1 a

setbit k1 6 1

setbit k1 7 0

# 查找字符串里面bit值為1的位置 (從左邊開始數)

set k1 a

bitpos k1 1

結果為:1

# bitpos的 start end指的是字節位置

# 查找字符串里面bit值為1從第0個字節開始的位置

set k1 ab

BITPOS k1 1 0

1

# 查找字符串里面bit值為0從第1個字節開始的位置

# 其中9的ASCII碼為00111001 a的ascii碼為01100001

# 所以a9的ASCII碼為01100001 00111001

# BITPOS k1 0 1取的位置就是:01100001 ‘0'0111001 中‘'圈住的位置

set k1 a9

BITPOS k1 0 1

9

# BITPOS找不到則返回-1

# 例如:查找字符串里面bit值為1的位置

set k1 "\x00\x00\x00"

BITPOS k1 1

-1

# bitcount統計的是1的數量, bitcount key [start, end] , 其中的start和end指的是byte位置而非bit位置。

# a的ASCII碼為01100001

set k1 a

bitcount k1

3

場景1:統計每個用戶的登錄天數

假設jack這名用戶,分別在第6天,第23天,第134天,和第364天登錄了系統。

可以執行如下命令:

setbit jack 6 1setbit jack 23 1setbit jack 134 1setbit jack 364 1

統計jack登錄的天數,直接可以通過:

bitcount jack

場景2:電商網站派發禮物

假設某個電商網站做活動,在某天要派送禮物,假設這個網站有2億用戶,請問應該備貨多少禮物比較適合

思路:

首先,可以考慮一下統計整個網站的活躍用戶有多少,比如我們設置三天,1號,2號,3號,統計三天登錄的用戶獲得一個近似的活躍用戶的數量:

# 編號為2的用戶登在2019年1月1號錄了一次

setbit 20190101   2  1

# 編號為3的用戶在2019年1月2號登錄了一次

setbit 20190102   3  1

# 編號為7的用戶在2019年1月2號登錄了一次

setbit 20190102   7  1

# 編號為7的用戶在2019年1月3號登錄了一次

setbit 20190103   7  1

然后通過:

# 將每一天標識的人數(位置上為1)的數進行與運算

bitop  or   destkey 20190101  20190102  20190103

然后求這個destkey中含有的1的數量,即為比較活躍的用戶(派發禮物需要準備的禮物數量)

BITCOUNT destkey

搶購,秒殺,詳情頁,點贊,評論

都可以使用Redis的incr 方法,這樣就可以規避并發下,對數據庫的事務操作,完全由redis內存操作代替

更多命令

# lpush和lpop搭配可以實現棧的功能

# lpush和rpop搭配可以實現隊列的功能

# 從左邊進

lpush k1 a b c

# 從左邊彈出

lpop k1

c

# lrange可以從左到右列出元素

lpush k1 a b c

lrange k1

1) "c"

2) "b"

3) "a"

# lindex 可以定位某個元素(從左邊開始,從0開始)

lindex k1 0

"c"

# lset 可以設置某個位置的元素

lset k1 0 xxxxx

lrange k1 0 -1

1) "xxxxx"

2) "b"

3) "a"

#LREM key count value

#根據參數 count 的值,移除列表中與參數 value 相等的元素。

#count 的值可以是以下幾種:

#count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數量為 count 。

#count 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數量為 count 的絕對值。

#count = 0 : 移除表中所有與 value 相等的值。

LREM k3 2 a

# LINSERT 

lpush k1 a b c d e f g

linsert k1 after b 6 # 也可以用before

lrange k1 0 -1

1) "g"

2) "f"

3) "e"

4) "d"

5) "c"

6) "b"

7) "6"

8) "a"# lpush和lpop搭配可以實現棧的功能

# lpush和rpop搭配可以實現隊列的功能

# 從左邊進

lpush k1 a b c

# 從左邊彈出

lpop k1

c

# lrange可以從左到右列出元素

lpush k1 a b c

lrange k1

1) "c"

2) "b"

3) "a"

# lindex 可以定位某個元素(從左邊開始,從0開始)

lindex k1 0

"c"

# lset 可以設置某個位置的元素

lset k1 0 xxxxx

lrange k1 0 -1

1) "xxxxx"

2) "b"

3) "a"

#當 BLPOP被調用時,如果給定 key 內至少有一個非空列表,那么彈出遇到的第一個非空列表的頭元素,并和被彈出元素所屬的列表的名字 key 一起,組成結果返回給調用者。

# BLPOP可以實現單播FIFO隊列

blpop x y z 0

# 打開另外一個redis-cli

# 然后執行

lpush y xxxsd

# 可以看到blpop x y z 0

# 返回了參數

blpop x y z 0

1) "y"

2) "xxxsd"

# blpop 最后一個參數是超時時間,如果設置為0,則不超時

# trim掉第三號元素之前和第五號元素之后的元素,從左邊第0個位置開始算

lpush k1 a b c d e f g

(integer) 15

ltrim k1 1 3

OK

lrange k1 0 -1

1) "f"

2) "e"

3) "d"

# Hash

hset person name zs

(integer) 1

hset person age 18 address GZ

(integer) 2

hmget person name age address

1) "zs"

2) "18"

3) "GZ"

hkeys person

1) "name"

2) "age"

3) "address"

hvals person

1) "zs"

2) "18"

3) "GZ"

hgetall person

1) "name"

2) "zs"

3) "age"

4) "18"

5) "address"

6) "GZ"

hincrbyfloat person age 0.5

"18.5"

hincrbyfloat person age -1

"17.5"

sadd k1 a  b c a

(integer) 3

smembers k1

1) "b"

2) "a"

3) "c"

srem k1 a

(integer) 1

smembers k1

1) "b"

2) "c"

# 交集sinter,類似的,還有并集:sunion,差集:sdiff

# sinerstore k k1 k2 將k1和k2交集后的元素存入k

sadd k1 a b c

SMEMBERS k1

1) "a"

2) "c"

3) "b"

sadd k2 a b d

(integer) 3

SINTER k1 k2

1) "a"

2) "b"

SUNION k1 k2

1) "a"

2) "d"

3) "b"

4) "c"

SDIFF k1 k2

"c"

#SRANDMEMBER 命令接受可選的 count 參數:

#如果 count 為正數,且小于集合基數,那么命令返回一個包含 count 個元素的數組,數組中的元素各不相同。如果 count 大于等于集合基數,那么返回整個集合。

#如果 count 為負數,那么命令返回一個數組,數組中的元素可能會重復出現多次,而數組的長度為 count 的絕對值。

# 可以用來抽獎

SRANDMEMBER k3 -3

1) "b"

2) "b"

3) "c"

#有序集

#sorted_set

#Z開頭的命令,ZADD,ZCOUNT

zadd fruit 8 apple 2 banana 3 orange

zrange fruit 0 -1

1) "banana"

2) "orange"

3) "apple"

zrange fruit 0 -1 withscores

1) "banana"

2) "2"

3) "orange"

4) "3"

5) "apple"

6) "8"

zcount fruit 3 8

(integer) 2

zscore fruit apple

"8"

#價格由低到高取出前兩位

zarange k1 0 1

#價格由高到低取出前兩位

zrevarange k1 0 1

zscore fruit apple

"8"

zrank fruit banana

0

zincrby fruit 2.5 banana

"4.5"

127.0.0.1:6379> zadd k1 2 a 3 b 4 c

(integer) 3

127.0.0.1:6379> zadd k2 3 a 1 b 2 c

(integer) 3

127.0.0.1:6379> ZUNIONSTORE k4 2 k1 k2

(integer) 3

127.0.0.1:6379> zrange k4 0 -1

1) "b"

2) "a"

3) "c"

127.0.0.1:6379> ZUNIONSTORE k4 2 k1 k2 aggregate sum

(integer) 3

127.0.0.1:6379> zrange k4 0 -1

1) "b"

2) "a"

3) "c"

127.0.0.1:6379> ZUNIONSTORE k4 2 k1 k2 aggregate max

(integer) 3

127.0.0.1:6379> zrange k4 0 -1

1) "a"

2) "b"

3) "c"

127.0.0.1:6379> ZUNIONSTORE k4 2 k1 k2 aggregate min

(integer) 3

127.0.0.1:6379> zrange k4 0 -1

1) "b"

2) "a"

3) "c"

通過管道連接Redis發送命令

yum install nc

[root@node01 ~]# nc localhost 6379

keys *

*0

set k1 heelo

+OK

[root@node1 utils]# echo -e "set k2 99\nincr k2\n get k2" | nc localhost 6379

+OK

:100

$3

100

發布/訂閱功能

127.0.0.1:6379> subscribe xxx

Reading messages... (press Ctrl-C to quit)

1) "subscribe"

2) "xxx"

3) (integer) 1

1) "message"

2) "xxx"

3) "hellod"

127.0.0.1:6379> publish xxx hellod

(integer) 1

如果需要考慮獲取實時數據和歷史數據

關于實時數據

  • pub/sub功能關于歷史消息
  • 三天前(sorted_set)
  • 更早以前(來自數據庫)

架構如下:

Redis的事務

執行順序

示例

127.0.0.1:6379> MULTI

OK

127.0.0.1:6379(TX)> set k1 aa

QUEUED

127.0.0.1:6379(TX)> set k2 ddd

QUEUED

127.0.0.1:6379(TX)> exec

1) OK

2) OK

watch用法

127.0.0.1:6379> watch k1

OK

127.0.0.1:6379> MULTI

OK

127.0.0.1:6379(TX)> get k1

QUEUED

127.0.0.1:6379(TX)> keys *

QUEUED

127.0.0.1:6379(TX)> exec

(nil)

另外一個客戶端

127.0.0.1:6379> MULTI

OK

127.0.0.1:6379(TX)> keys *

QUEUED

127.0.0.1:6379(TX)> set k1 ddsdfasdf

QUEUED

127.0.0.1:6379(TX)> exec

1) (empty array)

2) OK

為什么 Redis 的事務不支持回滾(roll back)

摘自:http://www.redis.cn/topics/transactions.html

如果你有使用關系式數據庫的經驗, 那么 “Redis 在事務失敗時不進行回滾,而是繼續執行余下的命令”這種做法可能會讓你覺得有點奇怪。

以下是這種做法的優點:

Redis 命令只會因為錯誤的語法而失敗(并且這些問題不能在入隊時發現),或是命令用在了錯誤類型的鍵上面:這也就是說,從實用性的角度來說,失敗的命令是由編程錯誤造成的,而這些錯誤應該在開發的過程中被發現,而不應該出現在生產環境中。因為不需要對回滾進行支持,所以 Redis 的內部可以保持簡單且快速。有種觀點認為 Redis 處理事務的做法會產生 bug , 然而需要注意的是, 在通常情況下, 回滾并不能解決編程錯誤帶來的問題。 舉個例子, 如果你本來想通過 INCR 命令將鍵的值加上 1 , 卻不小心加上了 2 , 又或者對錯誤類型的鍵執行了 INCR , 回滾是沒有辦法處理這些情況的。

以上就是詳解Redis基本命令與使用場景的詳細內容,更多關于Redis基本命令與使用場景的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • redis的五大數據類型應用場景分析
  • 解析redis hash應用場景和常用命令
  • 了解Redis常見應用場景
  • 淺談Redis在直播場景的實踐方案
  • SpringBoot集成Redisson實現延遲隊列的場景分析
  • 淺談redis五大數據結構和使用場景
  • 詳解redis中的鎖以及使用場景
  • Redis的11種Web應用場景簡介
  • Redis 常見使用場景

標簽:果洛 江蘇 楊凌 朝陽 大慶 北京 吉安 臺州

巨人網絡通訊聲明:本文標題《詳解Redis基本命令與使用場景》,本文關鍵詞  詳解,Redis,基本,命令,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Redis基本命令與使用場景》相關的同類信息!
  • 本頁收集關于詳解Redis基本命令與使用場景的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    26uuu国产日韩综合| 欧美另类久久久品| 欧洲精品中文字幕| 日本一区二区视频在线| 日韩二区三区四区| 亚洲宅男天堂在线观看无病毒| 国产一区二区三区高清播放| 日韩免费观看2025年上映的电影 | 成人av电影在线播放| 欧美成va人片在线观看| 老司机免费视频一区二区| 欧美精品欧美精品系列| 秋霞影院一区二区| 懂色av一区二区三区蜜臀| 欧美日韩亚洲国产综合| 午夜精品福利一区二区三区蜜桃| 欧美乱妇20p| 国产一区欧美日韩| 中文字幕综合网| 欧美日韩免费视频| 精品一区二区三区久久久| 欧美激情一区三区| 欧美日韩成人综合天天影院 | 亚洲天堂av老司机| 欧美日韩一区二区三区免费看 | 亚洲精品视频免费观看| 制服丝袜成人动漫| 福利91精品一区二区三区| 亚洲精品欧美激情| 欧美成人性福生活免费看| 亚洲妇熟xx妇色黄| 日韩欧美一级二级三级久久久| 国产一区二区调教| 亚洲制服丝袜一区| 中文字幕不卡在线| 欧美一区中文字幕| 91丨porny丨蝌蚪视频| 欧美激情一区二区三区在线| 欧美理论在线播放| 成人福利在线看| 免费视频最近日韩| 亚洲狠狠丁香婷婷综合久久久| 91精品国产一区二区三区香蕉| 成人国产视频在线观看| 午夜精品福利一区二区三区蜜桃| 久久蜜桃av一区二区天堂| 九九久久精品视频| ...xxx性欧美| 久久久久久久久久美女| 欧美一卡二卡在线| 欧美日韩免费电影| av在线这里只有精品| 视频一区视频二区中文| 国产精品久久久久毛片软件| 精品理论电影在线观看| 欧美美女bb生活片| 欧美少妇xxx| 国产九色sp调教91| 日本成人在线视频网站| 国产精品成人午夜| 国产三级一区二区| 国产成人超碰人人澡人人澡| 免费成人美女在线观看| 亚洲影视资源网| 久久久久久久久久久久久夜| 欧美一级高清片在线观看| 欧美群妇大交群中文字幕| 色94色欧美sute亚洲线路二| 99re免费视频精品全部| 成人晚上爱看视频| www.亚洲色图.com| av午夜一区麻豆| 日本韩国欧美在线| 在线观看欧美黄色| 欧美中文字幕一区| 欧美日韩视频在线观看一区二区三区| 成人免费视频一区二区| 99视频一区二区| 欧美综合久久久| 欧美日韩精品二区第二页| 欧美精品99久久久**| 欧美三级视频在线| 欧美日韩一区视频| 91精品国产一区二区| 日韩一区二区三区四区五区六区| 日韩午夜在线观看| 国产欧美日韩精品一区| 国产亚洲成av人在线观看导航| 国产三级一区二区三区| 亚洲视频资源在线| 午夜久久久久久| 国产一区二区在线观看免费| 成人精品一区二区三区中文字幕| 波多野结衣精品在线| 国产成人午夜精品影院观看视频 | 欧美mv和日韩mv的网站| 精品国产乱码久久久久久免费 | 色婷婷久久久综合中文字幕| 欧美影院精品一区| 久久综合九色综合欧美就去吻| 国产区在线观看成人精品| 一区二区三区久久| 韩国三级在线一区| 不卡一区二区在线| 欧美日韩免费在线视频| 中文字幕免费不卡在线| 亚洲国产视频直播| 中文字幕中文字幕一区| 亚洲另类一区二区| 国产毛片精品视频| 欧美熟乱第一页| 欧美国产成人在线| 男女激情视频一区| 91官网在线观看| 国产网站一区二区三区| 美女在线视频一区| 精品视频一区二区不卡| 欧美成人精品福利| 亚洲成人av一区| 99re8在线精品视频免费播放| 精品国产乱码久久久久久1区2区| 一区二区三区在线观看视频| 成人中文字幕电影| 久久久久国色av免费看影院| 亚洲伊人伊色伊影伊综合网| 99久久精品免费看| 国产亚洲综合在线| 国内精品第一页| 制服丝袜日韩国产| 亚洲国产乱码最新视频| 欧美色图天堂网| 亚洲国产精品人人做人人爽| 色综合天天视频在线观看| 中文字幕综合网| 狠狠色丁香久久婷婷综| 精品999在线播放| 国产伦精品一区二区三区免费迷 | 日韩欧美成人激情| 麻豆91小视频| 久久夜色精品国产噜噜av| 国产麻豆9l精品三级站| 日韩精品一区二区三区四区视频| 日本不卡一区二区| 久久免费偷拍视频| 成人午夜免费视频| 国产精品麻豆久久久| 成人丝袜视频网| 久久久99久久精品欧美| 国产成a人无v码亚洲福利| 精品国产三级a在线观看| 亚洲一二三区不卡| 欧美精品三级日韩久久| 亚洲日本在线观看| 成人天堂资源www在线| 在线视频中文字幕一区二区| 亚洲a一区二区| 91官网在线观看| 亚洲日本成人在线观看| 亚洲www啪成人一区二区麻豆| 日韩欧美亚洲国产精品字幕久久久 | 日韩精品乱码免费| 国产一本一道久久香蕉| 欧美三级欧美一级| 亚洲愉拍自拍另类高清精品| 91碰在线视频| 在线视频综合导航| 麻豆精品蜜桃视频网站| 日韩亚洲电影在线| 国内精品久久久久影院薰衣草 | 国产福利一区在线观看| 久久婷婷综合激情| 国产尤物一区二区| 亚洲不卡在线观看| 欧美剧在线免费观看网站| 亚洲一区二区av电影| 99国产麻豆精品| 免费观看30秒视频久久| 欧美成人高清电影在线| 久久99国产乱子伦精品免费| 欧美va亚洲va在线观看蝴蝶网| 久久97超碰色| 国产日韩欧美制服另类| 国产99久久久久| 综合av第一页| 国产一区欧美二区| 亚洲韩国精品一区| 一本色道久久综合亚洲aⅴ蜜桃 | 在线观看日韩av先锋影音电影院| 亚洲一区影音先锋| 日韩三级在线观看| 欧美视频一区二区三区在线观看| 日韩电影在线观看一区| 国产亚洲欧美一级| 国产精品夜夜爽| 乱中年女人伦av一区二区| 国产日本欧美一区二区| 欧美性受xxxx| 一区二区欧美精品| 在线不卡免费欧美| 成人综合婷婷国产精品久久免费|