Redis 常用命令

2021-10-21 00:23:43 字數 4274 閱讀 3633

常用命令:lpush,rpush,lpop,rpop,lrange等

​ redis的list在底層實現上並不是陣列而是鍊錶,redis list 的應用場景非常多,也是redis最重要的資料結構之一,比如微博的關注列表,粉絲列表,訊息列表等功能都可以用redis的 list 結構來實現。

​ redis list 的實現為乙個雙向鍊錶,即可以支援反向查詢和遍歷,更方便操作,不過帶來了部分額外的記憶體開銷。

​ 另外可以通過 lrange 命令,就是從某個元素開始讀取多少個元素,可以基於 list 實現分頁查詢,這個很棒的乙個功能,基於 redis 實現簡單的高效能分頁,可以做類似微博那種下拉不斷分頁的東西(一頁一頁的往下走),效能高。

​ lists的常用操作包括lpush、rpush、lrange、rpop等。可以用lpush在lists的左側插入乙個新元素,用rpush在lists的右側插入乙個新元素,用lrange命令從lists中指定乙個範圍來提取元素,rpop從右側彈出資料。來看幾個例子::

//新建乙個list叫做mylist,並在列表頭部插入元素"tom"

127.0.0.1:6379> lpush mylist "tom"

//返回當前mylist中的元素個數

(integer) 1

//在mylist右側插入元素"jerry"

127.0.0.1:6379> rpush mylist "jerry"

(integer) 2

//在mylist左側插入元素"andy"

127.0.0.1:6379> lpush mylist "andy"

(integer) 3

//列出mylist中從編號0到編號1的元素

127.0.0.1:6379> lrange mylist 0 1

1) "andy"

2) "tom"

//列出mylist中從編號0到倒數第乙個元素

127.0.0.1:6379> lrange mylist 0 -1

1) "andy"

2) "tom"

3) "jerry"

//從右側取出最後乙個資料

127.0.0.1:6379> rpop mylist

"jerry"

//再次列出mylist中從編號0到倒數第乙個元素

127.0.0.1:6379> lrange mylist 0 -1

1) "andy"

2) "tom"

常用命令:sadd,smembers,sunion 等

​ set 是無序不重複集合,list是有序可以重複集合,當你需要儲存乙個列表資料,又不希望出現重複資料時,set是乙個很好的選擇,並且set提供了判斷某個成員是否在乙個set集合內的重要功能,這個也是list所不能提供的。

​ 可以基於 set 輕易實現交集、並集、差集的操作。比如:在微博應用中,可以將乙個使用者所有的關注人存在乙個集合中,將其所有粉絲存在乙個集合redis可以非常方便的實現如共同關注、共同粉絲、共同喜好等功能,也就是求交集的過程。set具體命令如下:

//向集合myset中加入乙個新元素"tom"

127.0.0.1:6379> sadd myset "tom"

(integer) 1

127.0.0.1:6379> sadd myset "jerry"

(integer) 1

//列出集合myset中的所有元素

127.0.0.1:6379> smembers myset

1) "jerry"

2) "tom"

//判斷元素tom是否在集合myset中,返回1表示存在

127.0.0.1:6379> sismember myset "tom"

(integer) 1

//判斷元素3是否在集合myset中,返回0表示不存在

127.0.0.1:6379> sismember myset "andy"

(integer) 0

//新建乙個新的集合yourset

127.0.0.1:6379> sadd yourset "tom"

(integer) 1

127.0.0.1:6379> sadd yourset "john"

(integer) 1

127.0.0.1:6379> smembers yourset

1) "tom"

2) "john"

//對兩個集合求並集

127.0.0.1:6379> sunion myset yourset

1) "tom"

2) "jerry"

3) "john"

常用命令:zadd,zrange,zrem,zcard等

​ 和set相比,sorted set增加了乙個權重引數score,使得集合中的元素能夠按score進行有序排列。

​ 很多時候,我們都將redis中的有序集合叫做zsets,這是因為在redis中,有序集合相關的操作指令都是以z開頭的,比如zrange、zadd、zrevrange、zrangebyscore等等

//新增乙個有序集合hostset,加入乙個元素baidu.com,給它賦予score:1

//向hostset中新增乙個元素bing.com,賦予它的score是30

127.0.0.1:6379> zadd hostset 3 bing.com

(integer) 1

//向hostset中新增乙個元素google.com,賦予它的score是22

127.0.0.1:6379> zadd hostset 22 google.com

(integer) 1

//列出hostset的所有元素,同時列出其score,可以看出myzset已經是有序的了。

//只列出hostset的元素

3) "bing.com"

常用命令:hget,hset,hgetall 等。

​ hash 是乙個 string 型別的 field 和 value 的對映表,hash 特別適合用於儲存物件,後續操作的時候,你可以直接僅僅修改這個物件中的某個欄位的值。 比如我們可以hash資料結構來儲存使用者資訊,商品資訊等等。比如下面我就用 hash 型別存放了我本人的一些資訊:

//建立雜湊,並賦值

127.0.0.1:6379> hmset user:001 username antirez password p1pp0 age 34

ok//列出雜湊的內容

127.0.0.1:6379> hgetall user:001

1) "username"

2) "antirez"

3) "password"

4) "p1pp0"

5) "age"

6) "34"

//更改雜湊中的某乙個值

127.0.0.1:6379> hset user:001 password 12345

(integer) 0

//再次列出雜湊的內容

127.0.0.1:6379> hgetall user:001

1) "username"

2) "antirez"

3) "password"

4) "12345"

5) "age"

6) "34"

redis的備份方式

兩種方式rdb aof具體細節解釋

redis集群

伺服器數:1.3.5.7

加備機的6.10.14

自己了解一致性hash演算法

redis記憶體穿透

如果短時間大量穿透就會造成乙個現象名為"雪崩"

怎麼解決

設定不同的過期時間

如果不嫌貴

做雙快取

Redis常用命令

1 keys 返回滿足給定pattern的所有key。例如 keys 返回所有鍵 2 exists 確認乙個key是否存在。例如 exists age 3 del 刪除指定key。例如 del age 4 expire 設定乙個key的過期時間。例如 expire age 100 單位 秒 5 pe...

redis常用命令

redis cli p 6079 登陸redis,埠為6079 auth psssword 如果redis帶密碼,則執行上邊一行,password替換為你的密碼。src redis cli p 6380 keys wei xargs src redis cli p 6380 del 批量刪除埠為63...

Redis常用命令

啟動 redis 服務 src redis server或者src redis server redis.conf src redis server redis.conf 1 log.log 2 errlog.log 1為標準輸出,2為錯誤輸出 將 redis 作為 linux 服務隨機啟動 vi ...