redis客戶端的使用


1、客戶端連接 :redis-cli ,通過help命令可知曉怎么使用redis.

同時,通過service redis-cli -help連接,也可以查看連接時

可以通過help @string來查看詳細介紹

   

2、redis的五種value

Redis 中不管類型如何,都會存在2個序列。

正序列

0

1

2

3

4

5

序列

a

b

c

d

e

f

反序列

-6

-5

-4

-3

-2

-1

   

Key-value:

①string

當年存入一個中文,由於它根據不同的編碼會生成不同的字節碼。會出現如下情況,查詢出來是字節碼。

   

當然,我們也可以用如下方法啟動redis,使之直接查詢結果而非字節碼。

   

編碼類型是依據每個客戶端自行選擇的,這是redis給的一項權利。

   

redis的二進制安全

   

二進制安全,說白了就是傳輸的文件內容不能改變。因為有很多字節碼解析方式GBK\utf-8扽等,在redis把編碼格式給了用戶,所以為了不取出亂碼文件,嚴格統一編碼格式。

   

   

1、字符串

①、get\set用法

   

   

   

②append

   

   

③strlen 查看字符串長度

   

   

④setrange

從指定的偏移量開始,在鍵處覆蓋字符串的一部分

   

   

⑤getrange

獲取存儲在鍵上的字符串的子字符串

   

   

   

2、bitmap(緩存、統計方面)

⑤bitop和bitcount相關的命令皆是位操作

Bitcount key start end

Key:已存在的key

Start: 起始位

End: 結束位

一個key,如果你不確定它的長度,而你又想統計它全部為1的總數:bitcount k1 0 -1

   

Operation: 與或非(or and)

Destkey: 生成的結果集的key

Key… 要參與位運算的key

   

⑥setbit 和 gitbit

*** setbit p1 p2 p3

*p1: key

*p2: 1byte = 8bit(0-7)(可以是0~) 超過7 則多一個byte.

*p3: 1或0

場景1 以瀏覽和未瀏覽的區分

https://www.cnblogs.com/K-artorias/p/8463286.html

   

場景2

可以實現 統計一年內登陸天數

例如:一年365天,默認為0,登陸為1。

第一天開始

1

1

0

1

0

1

0

0

~~~

0

0

0

0

0

0

0

0

最后一天

0

1

0

1

1

0

0

1

------------------------------------------------------------------------------

如上圖數據,配置setbit:

Setbit k1 0 1 , Setbit k1 1 1 , Setbit k1 3 1,Setbit k1 5 1

   

Setbit k1 364 1,Setbit k1 361 1,Setbit k1 360 1,Setbit k1 358 1

此時,要統計今年登陸的天數只要計算k1中的value=1的個數。

Bitcount:特殊提示: setbit的key,隨着你的設置長度而增加。

   

   

場景3

統計一個月內的活躍用戶

???問題,求連續登陸2天以上的用戶???

查詢結果:3人中連續登陸3天的只有1人。

查詢結果:3人中連續登陸2天的只有2人。

   

3、數值(秒殺、詳情頁、點贊、評論)

①通過type key 查詢value存儲的類型

   

②通過object+" "+" "+encoding key的方式可以查詢redis底層以什么格式存儲這些值的。

   

④incr 和 decr

   

Incr 和 decr延展

incrby和decrby,后接增幅

   

②list

   

   

Lrange = list + range

a、查詢list指定范圍。

   

   

b、查詢list長度

   

   

c、向已存在的list中添加元素

   

   

1、描述棧(正向命令)后進先出

這里的lpush/rpush= left/right + push,從左邊壓入每一個元素,同樣lpop也是從左邊彈出。

所以 a b c d e f 按照順序壓入,f最先彈出來。

   

   

   

   

2、描述隊列(反像命令)先進先出

描述隊列只需要左放右出/右出左放

   

3、描述數組

   

   

d、刪除list中指定數量的元素

   

   

e、根據列表中的元素的索引設置其值

   

   

f、將列表修剪到指定范圍

   

   

g、刪除列表中的最后一個元素,將其添加到另一個列表中並返回

   

   

   

4、單播隊列(一次只夠一個人消化)、阻塞

   

BL/RPOP阻塞式彈出

bLPOP = block + left + pop

   

---------------------------------------

   

***此時redis中沒有k1****

Pc1的情況

   

Pc2的情況

   

由此可見,先請求先獲得。而且彈出一個元素后就立馬彈出下一個。

③hashMap(場景:詳情頁、點贊)

a、HSET/HGET 和 hmset/ hmget

   

   

b、HGETALL 、HDEL 、HKEYS 、HLEN 、HSTRLEN

   

   

   

   

   

c、hincrby和hincrbyfloat

   

   

   

   

   

   

d、hscan 、hSETnx

   

   

④set(去重、抽獎)

a、基本操作sadd 、scard 、smembers 、sismember、srem

   

   

b、多個集合之間的"關系"集

1、交集 SINTER 和 SINTERSTORE

   

2、差集 SDIFF 和 SDIFFSTORE

   

3、並集 UNION 和 UNIONSTORE

   

   

4、隨機數 與 其它

a、SRanDmember 隨機彈出n個元素

   

   

b、spop隨機彈出一個元素

   

c、smove移動元素

   

⑤有序集合sorted set(排名)

是為什么有序集合?

就是可以比set多設置一個"score"參數。而且遍歷set會根據score參數排序。

Sorted_set的命令都是以Z開頭!!!

a、set內基本操作

   

   

   

   

   

   

b、各類方式刪除元素

   

   

c、篩選后通過分數排名(場景:電影排名、下載排名)

   

   

   

d、交集和並集,這里需要注意的是 權重和聚合,都會累加


免責聲明!

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



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