對redis來講,全部的key(鍵)都是字符串。mysql
是redis中最基本的數據類型,一個key對應一個value。redis
String類型是二進制安全的,意思是 redis 的 string 能夠包含任何數據。如數字,字符串,jpg圖片或者序列化的對象。spring
使用:get 、 set 、 del 、 incr、 decr 等sql
127.0.0.1:6379> set hello world OK 127.0.0.1:6379> get hello "world" 127.0.0.1:6379> del hello (integer) 1 127.0.0.1:6379> get hello (nil) 127.0.0.1:6379> get counter "2" 127.0.0.1:6379> incr counter (integer) 3 127.0.0.1:6379> get counter "3" 127.0.0.1:6379> incrby counter 100 (integer) 103 127.0.0.1:6379> get counter "103" 127.0.0.1:6379> decr counter (integer) 102 127.0.0.1:6379> get counter "102"
實戰場景:緩存
1.緩存: 經典使用場景,把經常使用信息,字符串,圖片或者視頻等信息放到redis中,redis做爲緩存層,mysql作持久化層,下降mysql的讀寫壓力。安全
2.計數器:redis是單線程模型,一個命令執行完纔會執行下一個,同時數據能夠一步落地到其餘的數據源。session
3.session:常見方案spring session + redis實現session共享,數據結構
是一個Mapmap,指值自己又是一種鍵值對結構,如 value={{field1,value1},......fieldN,valueN}}app
使用:全部hash的命令都是 h 開頭的 hget 、hset 、 hdel 等網站
127.0.0.1:6379> hset user name1 hao (integer) 1 127.0.0.1:6379> hset user email1 hao@163.com (integer) 1 127.0.0.1:6379> hgetall user 1) "name1" 2) "hao" 3) "email1" 4) "hao@163.com" 127.0.0.1:6379> hget user user (nil) 127.0.0.1:6379> hget user name1 "hao" 127.0.0.1:6379> hset user name2 xiaohao (integer) 1 127.0.0.1:6379> hset user email2 xiaohao@163.com (integer) 1 127.0.0.1:6379> hgetall user 1) "name1" 2) "hao" 3) "email1" 4) "hao@163.com" 5) "name2" 6) "xiaohao" 7) "email2" 8) "xiaohao@163.com"
實戰場景:
1.緩存: 能直觀,相比string更節省空間,的維護緩存信息,如用戶信息,視頻信息等。
List 說白了就是鏈表(redis 使用雙端鏈表實現的 List),是有序的,value能夠重複,能夠經過下標取出對應的value值,左右兩邊都能進行插入和刪除數據。
使用列表的技巧
使用:
127.0.0.1:6379> lpush mylist 1 2 ll ls mem (integer) 5 127.0.0.1:6379> lrange mylist 0 -1 1) "mem" 2) "ls" 3) "ll" 4) "2" 5) "1" 127.0.0.1:6379>
實戰場景:
1.timeline:例如微博的時間軸,有人發佈微博,用lpush加入時間軸,展現新的列表信息。
集合類型也是用來保存多個字符串的元素,但和列表不一樣的是集合中 1. 不容許有重複的元素,2.集合中的元素是無序的,不能經過索引下標獲取元素,3.支持集合間的操做,能夠取多個集合取交集、並集、差集。
使用:命令都是以s開頭的 sset 、srem、scard、smembers、sismember
127.0.0.1:6379> sadd myset hao hao1 xiaohao hao (integer) 3 127.0.0.1:6379> SMEMBERS myset 1) "xiaohao" 2) "hao1" 3) "hao" 127.0.0.1:6379> SISMEMBER myset hao (integer) 1
實戰場景;
1.標籤(tag),給用戶添加標籤,或者用戶給消息添加標籤,這樣有同一標籤或者相似標籤的能夠給推薦關注的事或者關注的人。
2.點贊,或點踩,收藏等,能夠放到set中實現
有序集合和集合有着必然的聯繫,保留了集合不能有重複成員的特性,區別是,有序集合中的元素是能夠排序的,它給每一個元素設置一個分數,做爲排序的依據。
(有序集合中的元素不能夠重複,可是score 分數 能夠重複,就和一個班裏的同窗學號不能重複,但考試成績能夠相同)。
使用: 有序集合的命令都是 以 z 開頭 zadd 、 zrange、 zscore
127.0.0.1:6379> zadd myscoreset 100 hao 90 xiaohao (integer) 2 127.0.0.1:6379> ZRANGE myscoreset 0 -1 1) "xiaohao" 2) "hao" 127.0.0.1:6379> ZSCORE myscoreset hao "100"
實戰場景:
1.排行榜:有序集合經典使用場景。例如小說視頻等網站須要對用戶上傳的小說視頻作排行榜,榜單能夠按照用戶關注數,更新時間,字數等打分,作排行。
感謝觀看。感謝支持。
參考: