❶ 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服务,配置文件就会生效。