常用命令: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 ...