❶ Redis存儲格式
redis目前提供四種數據類型:string,list,set及zset(sorted set)。
redis使用了兩種文件格式:全量數據和增量請求。全量數據格式是把內存中的數據寫入磁碟,便於下次讀取文件進行載入;增量請求文件則是把內存中的數據序列化為操作請求,用於讀取文件進行replay得到數據,序列化的操作包括SET、RPUSH、SADD、ZADD。redis的存儲分為內存存儲、磁碟存儲和log文件三部分,配置文件中有三個參數對其進行配置。save seconds updates,save配置,指出在多長時間內,有多少次更新操作,就將數據同步到數據文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。appendonly yes/no ,appendonly配置,指出是否在每次更新操作後進行日誌記錄,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為redis本身同步數據文件是按上面的save條件來同步的,所以有的數據會在一段時間內只存在於內存中。appendfsync no/always/everysec ,appendfsync配置,no表示等操作系統進行數據緩存同步到磁碟,always表示每次更新操作後手動調用fsync()將數據寫到磁碟,everysec表示每秒同步一次。
❷ 通過Redis消息隊列實現大文件處理
一、故事背景
1、讀取離線文件數據,再通過【離線數據】作為條件,查詢第三方介面,返回最終的結果,再入庫。
2、 業務邏輯是很簡單, 讀取文件、查詢介面、返回數據集、入庫 四步。
3、業務特性:第三方介面調用400毫秒(ms) 。
如果用普通單線程去跑算500毫秒一個請求,一天也就跑8W多數據量,20多億的數據不知道跑到猴年馬月了。
二、處理方案
A) 初步方案採用ganymed-ssh2(文件都存儲在Linux伺服器上) 來讀文件,Redis來存儲消息、多線程來提升處理能力。
B) 流程圖:
三、呈現問題
四、優化問題
最終流程圖:
1、 通過Redis做一個計數器 每讀取一行記錄數值,即使服務終止後,先從Redis讀取這個數值
再通過cat指定行數開始讀數據即可。
2、 通過取模拆Key 分片到不同小Key存儲 ,降低單個節點存儲壓力,也充分利用了存儲資源。
3、Redis Push 提供了批量方式(leftPushAll) ,可以指定讀取行數再批量入庫,而pop並沒有提供批量 只能一個一個pop。
4、消費者通過多線程pop、再分發到線程去處理。
五、總結問題
❸ 如何在redis配置文件中查看redis版本
redis.conf 配置項說明如下:
1. Redis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程
daemonize no
2. 當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定
pidfile /var/run/redis.pid
3. 指定Redis監聽埠,默認埠為6379,作者在自己的一篇博文中解釋了為什麼選用6379作為默認埠,因為6379在手機按鍵上MERZ對應的號碼,而MERZ取自義大利歌女Alessia Merz的名字
port 6379
4. 綁定的主機地址
bind 127.0.0.1
5.當 客戶端閑置多長時間後關閉連接,如果指定為0,表示關閉該功能
timeout 300
6. 指定日誌記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning,默認為verbose
loglevel verbose
7. 日誌記錄方式,默認為標准輸出,如果配置Redis為守護進程方式運行,而這里又配置為日誌記錄方式為標准輸出,則日誌將會發送給/dev/null
logfile stdout
8. 設置資料庫的數量,默認資料庫為0,可以使用SELECT <dbid>命令在連接上指定資料庫id
databases 16
9. 指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合
save <seconds> <changes>
Redis默認配置文件中提供了三個條件:
save 900 1
save 300 10
save 60 10000
分別表示900秒(15分鍾)內有1個更改,300秒(5分鍾)內有10個更改以及60秒內有10000個更改。
❹ redis 如何 把文件的內容 存進去
最近學習下redis,作為一個高性能的k/v資料庫,如果數據不用swap的話,redis的性能是無以倫比的。最近在做一個系統附件的緩存,試著把附件放到redis試試,寫了個保存文件的方法。public class TestRedis{
Jedis redis = new Jedis("localhost");
//序列化方法
public byte[] object2Bytes(Object value) {
if (value == null)
return null;
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream outputStream;
try {
outputStream = new ObjectOutputStream(arrayOutputStream);
outputStream.writeObject(value);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
arrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return arrayOutputStream.toByteArray();
}
//反序列化方法
public Object byte2Object(byte[] bytes) {
if (bytes == null || bytes.length == 0)
return null;
try {
ObjectInputStream inputStream;
inputStream = new ObjectInputStream(new ByteArrayInputStream(bytes));
Object obj = inputStream.readObject();
return obj;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
//保存文件方法
public void setFile(String key,String path){
File fr = new File(path);
redis.set(key.getBytes(), object2Bytes(fr));
}
//讀取文件對象方法
public File getFile(String key){
Jedis redis = new Jedis("localhost");
File file = (File)byte2Object(redis.get(key.getBytes()));
return file;
}
public void testFile(String key,String path)throws Exception{
setFile("test", "D:\\test.txt");
File file = getFile("test");
BufferedReader br = new BufferedReader(new FileReader(file));
String record = null;
while ((record = br.readLine()) != null) {
System.out.println("record:"+record);
}
}
public static void main(String[] args) throws Exception{
TestRedisos = new TestRedis();
os.testFile("test", "D:\\test.txt");
}
}
❺ 如何修改redis參數文件位置
解壓並且make後進行make install 為啟動redis做准備
進入redis安裝目錄,然後需要從中拷貝redis.config文件。 這時候需要備份,我們在/etc/下面新建一個文件夾
然後將文件拷貝到此處,執行cp命令進行拷貝
格式如下:
cp redis.config位置 目標位置
然後進行修改redis.config文件,進入etc目錄,用vi進入需要修改的redis.config
進入修改配置文件,找到general
看到下面:
#
By default Redis does not run as a daemon. Use 'yes' if you need it.#
Note that Redis will write a pid file in /var/run/redis.pid when
daemonized.
Redis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程。
修改下面的no 為yes
然後保存退出 wq!
啟動redis redis-server /etc/myredis/redis.config
然後再測試啟動成功與否
redis-cli ping
8
然後測試set value是否可用
。發現可用 OK完成。
❻ 簡單介紹redis以及ubuntu和windows下怎麼安裝redis和配置文件詳解
先下載redis,找到下載的壓縮包 redis-64.3.0.503.zip,解壓後,重命名為redis-3.0,置於某個文件夾下(如D:\Program Files)。
1. 運行Redis伺服器端
直接雙擊D:\Program Files\redis-3.0目錄下的redis-server.exe文件(redis伺服器端),就會以窗口的形式運行Redis伺服器(但該窗口不可關閉,否則,Redis服務不可用)。此種運行redis伺服器的方式,沒有載入指定的配置文件。
2. 運行Redis客戶端
直接雙擊D:\Program Files\redis-3.0目錄下的redis-cli.exe文件(redis客戶端),如果顯示127.0.0.1:6379> ,就說明客戶端運行成功。
輸入命令: keys *
查看所有的鍵
如果提示「NOAUTH Authentication required.」,則說明Redis伺服器設置了密碼,請輸入正確的密碼後,再來進行其他操作。
輸入命令: auth 密碼
如果提示OK,就說明密碼正確。
Tips:可以將D:\Program Files\redis-3.0目錄下的redis-server.exe發送到桌面快捷方式,便於以後快速打開Redis客戶端。
3. 將Redis服務安裝到本地服務
由於上述啟動Redis伺服器的方式有點復雜,且redis服務窗口不可關閉。故這里介紹如何將Redis服務安裝到Windows系統的本地服務。
復制D:\Program Files\redis-3.0目錄下的redis.windows.conf文件,重命名為redis.conf,來作為redis的配置文件。
打開win系統的命令行,依次輸入下列命令:
d: (回車,切換到d盤)
cd Program Files\redis-3.0\ (回車,切換至D:\Program Files\redis-3.0目錄)
redis-server --service-install redis.conf --loglevel verbose (回車,安裝redis本地服務,指定配置文件redis.conf)
操作完成後,就可以到win系統的本地服務管理處,查看和操作Redis服務。(計算機圖標右鍵 -> 管理) -> 服務和應用程序 -> 服務)
4. 設置Redis密碼
編輯D:\Program Files\redis-3.0目錄下的redis.conf配置文件,找到如下代碼:
# requirepass foobared
將其復制一行,去掉前導的#注釋符,將foobared改為你要設置的密碼,如:
requirepass test
保存退出。
重啟Redis服務,配置文件就會生效。