1. 程式人生 > >簡單說一下redis(上)

簡單說一下redis(上)

一. 是什麼?

redis是一款優秀的nosql(非關係型),key-vlaue,記憶體級別的資料庫!redis是單執行緒,操作是安全的!
關係型:用一張二維表格來表示和儲存現實生活中物件的這一類資料庫。 oracle ,mysql
非關係型(nosql):不用二維表格,比如key-value ,文件等資料.Redis,MongoDB ,Hadoop

二. 特點

1.Redis支援資料的持久化,會根據一定的策略持久化到磁碟,即使斷電也不會丟失資料.
2.Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
3.Redis支援資料的備份,即master-slave模式的資料備份。

三. 資料及應用場景

1.String : string是redis最基本的型別,一個key對應一個value。string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如圖片或者序列化的物件。String型別是Redis最基本的資料型別,一個鍵最大能儲存512MB。
常用命令:
① get、獲取儲存在指定鍵中的值
② set、設定儲存在指定鍵中的值
③ del、刪除儲存在指定鍵中的值(這個命令可以用於所有的型別)
使用場景:利用incr生成id,decr減庫存, 快取–過期時間設定,模擬session

-

2.list: Redis 列表是簡單的字串列表,按照插入順序排序。你可以新增一個元素到列表的頭部(左邊)或者尾部(右邊)。
常用命令:
① rpush、將給定值推入列表的右端
② lrange、獲取列表在指定範圍上的所有值
③ lindex、獲取列表在指定範圍上的單個元素
使用場景: 多工排程佇列

-

3.set: Redis的Set是string型別的無序集合。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是O(1)。
常用命令:
①sadd、將給定元素新增到集合
②smembers、返回集合包含的所有元素
③sismember、檢查指定元素是否存在於集合中
使用場景: 微博關注數

-

4.hash : Redis hash 是一個鍵值(key=>value)對集合。Redis hash是一個string型別的field和value的對映表,hash特別適合用於儲存物件。
常用命令:
①hset、在雜湊裡面關聯起指定的鍵值對
②hget、獲取指定雜湊鍵的值
③hgetall、獲取雜湊包含的所有鍵值對
④hdel、如果給定鍵存在於雜湊裡面,那麼移除這個鍵
使用場景:購物車

-

5.zset: Redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。
常用命令:
①zadd、將一個帶有給定分值的成員新增到有序集合裡面
②zrange、根據元素在有序排列中所處的位置,從有序集合裡面獲取多個元素
③zrangebyscore、獲取有序集合在給定分值範圍內的所有元素 ④zrem、如果指定成員存在於有序集合中,那麼移除這個成員
使用場景:排行榜

四:持久化

  1. rdb 快照:預設redis是會以快照的形式將資料持久化到磁碟的(一個二進位制檔案,dump.rdb,這個檔名字可以指定),在配置檔案(redis.conf)中的格式是:save
    N M表示在N秒之內,redis至少發生M次修改則redis抓快照到磁碟。當然我們也可以手動執行save或者bgsave(非同步)做快照。
################################ SNAPSHOTTING  #################################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#
#   Note: you can disable saving at all commenting all the "save" lines.

save 900 1
save 300 10
save 60 10000
  1. aof 命令副本: AOF 持久化記錄伺服器執行的所有寫操作命令,並在伺服器啟動時,通過重新執行這些命令來還原資料集。 AOF 檔案中的命令全部以 Redis 協議的格式來儲存,新命令會被追加到檔案的末尾。 Redis 還可以在後臺對 AOF 檔案進行重寫(rewrite),使得 AOF 檔案的體積不會超出儲存資料集狀態所需的實際大小。

五. 優點

1.效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
2.豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。
3.原子 – Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。單個操作是原子性的。多個操作也支援事務,即原子性,通過MULTI和EXEC指令包起來。
4.豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。

六.訪問

Java訪問redis:

1.使用jedisjava客戶端來訪問redis伺服器,優點類似jdbc訪問db一樣
2.如果是spring進行整合時,可以使用springDataRedis來訪問redis , springDataRedis 只是對jedis的二次封裝