Redis學習筆記:Redis簡介

    1、NoSQL和關係型數據庫區別數據庫

    NoSQL非關係型數據庫:Redis、MongoDB、HBase等,基於Key-Value存儲,採用命令操做。緩存

    關係型數據庫:Oracle、MySQL、DB二、SQL Server等,基於表結構存儲,採用SQL操做。服務器

    2、Redis簡介網絡

    Redis是由意大利人Salvatore Sanfilippo(網名:antirez)開發的一款內存高速緩存數據庫。Redis全稱爲: Remote Dictionary Server(遠程數據服數據結構

務),該軟件使用C語言編寫,是典型的NoSQL數據庫服務器。Redis是一個Key-Value存儲系統,它支持豐富的數據類型,如String、Hash、List、Set、app

Zset(Sorted Set)。性能

    3、Redis特色spa

    優勢:.net

  • 性能極高:Redis能支持每秒10萬讀寫頻率。
  • 支持豐富的數據類型:包括String、Hash、List、Set、Zset(Sorted Set)等多種數據類型。
  • 原子性:全部操做都是原子性的(一塊兒成功,或者一塊兒失敗)。
  • 支持持久化操做:將內存數據同步到數據文件中。
  • 提供了事務、消息傳遞等功能。

   缺點:線程

  • 因爲是內存數據庫,因此單臺機器存儲的數據量,取決於機器自己的內存大小。雖然Redis自己有Key過時策略,可是仍是須要提早預估及節約

內存,若是內存增加過快,須要按期刪除數據。

  • 若是進行完整重同步,因爲須要生成rdb文件並進行傳輸,所以會佔用主機的CPU並會消耗網絡的帶寬。雖然Redis 2.8版本已經有部分重同步的

功能,可是仍是有可能完整重同步的,好比新上線的備機。

  • 修改配置文件後,重啓將硬盤中的數據加載到內存時,時間比較久。在這個過程當中,Redis不能提供服務。

    備註:

    在系統中,一般使用Redis作數據緩存使用。

    查詢緩存:第一次查詢時會從數據庫中取出數據放入緩存,後續查詢都將從緩存中讀取數據。

    添加/更新緩存:將用戶數據經過檢測後放入緩存,而後給用戶響應,後臺開啓線程取數據處理。

    4、Redis經常使用數據類型

    Redis經常使用的數據類型有5種,即String、Hash、List、Set、Zset(Sorted Set):

    String--字符串

    String是簡單的Key-Value 類型,Value不只能夠是String,也能夠是數字(當數字類型用Long能夠表示的時候encoding就是整型,其它都存儲在

sdshdr當作字符串),在List、Set和Zset中包含的獨立的元素類型都是Redis String類型。String類型的Value最大爲512MB。

    Hash--字典

    Hash是最接近關係型數據庫結構的數據類型,能夠將數據庫中一條記錄或程序中一個對象轉換成hashmap存放在Redis中。在Memcached中,咱們

常常將一些結構化的信息打包成hashmap,而後在客戶端序列化後存儲爲一個字符串的值 (通常是JSON格式),好比用戶的暱稱、年齡、性別等。

Hash的鍵值對個數最多爲2^32-1(4294967295)個。

    List--列表

    List說白了就是鏈表類型(雙端鏈表),主要功能是push、pop、獲取一個範圍的全部值等,其中的Key能夠理解爲鏈表的名字。在Redis中,List就

是Redis String的列表,按照插入順序進行排序,好比使用LPUSH命令在List頭插入一個元素、使用RPUSH命令在List尾插入一個元素。當這兩個命令

之一做用於一個空的Key時,一個新的List就建立出來了。List的元素個數最多爲2^32-1(4294967295)個。

    Set--集合

    Set就是一個集合,集合的概念就是一堆不重複值的組合。利用Redis提供的Set數據結構,能夠存儲一些集合性的數據。在Redis中,Set就是Redis

String的無序集合,不容許有重複元素,對Set的操做有交集、並集、差集等。Set的元素個數最多爲2^32-1(4294967295)個。

    ZSet(Sorted Set)--有序集合

    和Set相比,Sorted Set是將Set中的元素增長了一個權重參數score,使得集合中的元素可以按score進行有序排列,對於已經有序的Zset,仍然能夠

使用SORT命令,經過指定ASC|DESC參數對其進行排序。Zset的元素個數最多爲2^32-1(4294967295)個。

    5、Redis操做命令

    5.一、字符串操做

set key value       //設置value值
get key             //獲取value值
strlen key          //獲取value長度
incr key            //將value加1
incrby key i        //將value加i
decr key            //將value減1
decrby key i        //將value減i
append key value    //將原有key的值拼接上value值

    5.二、哈希操做

hset key 字段名 字段值                 //設置一組
hmset key 字段名 字段值 字段名 字段值    //設置多組
hget key 字段名                       //獲取一個字段值
hmget key 字段名1 字段名2              //獲取多個字段值
hlen key                             //獲取字段數量
hkeys key                            //查看字段名
hdel key 字段名                       //刪除字段名

    5.三、列表操做

lpush key value                           //從頭部放入值(key列表存在插入,不存在建立列表插入)
rpush key value                           //從尾部放入值
lpop key                                  //從頭部刪除一個元素
rpop key                                  //從尾部刪除一個元素
lrem key count value                      //刪除多少個值等於value的元素
lindex key index                          //獲取index位置的value值
lrange key start end                      //獲取指定範圍的元素
linsert key before|after 元素 要插入的值    //插入元素
lset key index value                      //更新index位置的value值
llen key                                  //獲取列表元素數

    5.四、集合操做

sadd key value value     //向集合添加元素
srem key value           //刪除value元素
scard key                //獲取集合元素數量
smembers key             //查看全部元素
srandmember key count    //獲取count個隨機數
sinter key1 key2         //兩個集合交集,key1和key2都有
sunion key1 key2         //兩個集合並集,去重複合併
sdiff key1 key2          //差集,key1有,key2沒有

    5.五、有序集合

zadd key score value       //向集合添加元素
zrem key value             //刪除元素
zcard key                  //元素數量
zrange key start end       //獲取指定範圍的元素(小到大)
zrevrange key start end    //獲取指定範圍的元素(大到小)
zrevrank key value         //獲取value索引(大到小)
zrank key value            //獲取value索引(小到大)

    5.六、key操做

keys pattern         //查看key
del key              //刪除key
expire key time      //設置有效時間(秒)
type key             //判斷value值類型
rename key newkey    //修改key名稱

    6、Redis文件格式

    Redis使用了兩種文件格式:全量數據和增量請求。

    全量數據:是把內存中的數據寫入磁盤,便於下次讀取文件時進行加載。

    增量請求:是把內存中的數據序列化爲操做請求,用於讀取文件進行replay獲得數據,序列化的操做包括SET、RPUSH、SADD、ZADD。

    備註:Redis的存儲分爲內存存儲、磁盤存儲和log文件三部分,配置文件中有三個參數對其進行配置。

    7、Redis應用場景

    (1)會話緩存(Session Cache)

    (2)全頁緩存(FPC)

    (3)隊列

    (4)排行榜/計數器

    (5)發佈/訂閱

 

    參考自:

    https://blog.csdn.net/weixin_39671217/article/details/78021732

相關文章
相關標籤/搜索