irpas技术客

Redis(一) window下如何安装配置redis_heater404_如何安装redis

大大的周 1877

redis的官网为:Redis。但是官网上不提供windows版本的,只提供Linux版本的下载。

GitHub上可以下载windows版本:Releases · microsoftarchive/redis (github.com)。

1 redis安装

安装后将该目录加到环境变量中即可。

redis.windows.conf是redis的配置文件。redis-server.exe是服务器端。redis-cli是命令行客户端。redis-benchmark是redis性能测试工具,测试redis在你的系统及你的配置下的读写性能。 2 测试所安装的redis

输入命令redis-server redis.windows.conf,出现No error则证明redis服务启动成功。

看到其他文章里执行命令后,cmd窗口会出现由点组成的图,但是不知道为什么我这里没有。

3 redis相关配置

相关配置在redis.windows.conf文件中。

port 端口号,例如6379bind 实例绑定的访问地址127.0.0.1requirepass 访问的密码maxheap 记得把这个配置节点打开,否则redis 服务无法启动。例如maxheap 1024000000。timeout:请求超时时间logfile:log文件位置databases:开启数据库的数量dbfilename:数据快照文件名(只是文件名,不包括目录) 4 连接测试

在命令行输入如下命令:

redis-cli –h 127.0.0.1 –p 6379

参数分别为host、port,如果设置了密码,则必须要加上-a password。

或者直接启动redis-cli.exe。

置了密码,则必须要加上-a password。

或者直接启动redis-cli.exe。

redis 和 memcached 的区别

对于 redis 和 memcached 的区别有下面四点:

redis支持更丰富的数据类型(支持更复杂的应用场景):Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中。 集群模式:memcached没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 redis 目前是原生支持 cluster 模式的. Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的多路 IO 复用模型

redis 持久化机制

Redis的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file,AOF)

快照(snapshotting)持久化(RDB): Redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis创建快照之后,可以对快照进行备份,比较适合用来做灾备,但缺点是快照保存完成之前如果宕机,这段时间的数据将会丢失,另外保存快照时可能导致服务短时间不可用。

快照持久化是Redis默认采用的持久化方式,在redis.conf配置文件中默认有此下配置:

save 3600 1 #如果在3600秒(1小时)内,有一个以上的key被修改,那么就执行持久化操作!

save 300 10 #在300秒(5分钟)之内,如果至少有10个key发生变化,Redis就会自动触发BGSAVE命令创建快照。

save 60 10000 #在60秒(1分钟)之内,如果至少有10000个key发生变化,Redis就会自动触发BGSAVE命令创建快照。

RDB执行流程: 1、redis 父进程首先判断当前是否在执行bgsave的子进程,如果在执行则bgsave 命令直接返回; 2、父进程执行 fork 操作创建子进程,这个复制过程中父进程是阻塞的,redis不能执行来自客户端的任何命令; 3、父进程 fork 后, bgsave 命令返回”Background saving started”信息并不再阻塞父进程,并可以响应其他命令; 4、子进程创建 RDB文件,根据父进程内存快照生成临时快照文件,完成后对原有文件进行原子替换( RDB 始终完整); 5、子进程告诉父进程处理完成。

AOF(append-only file)持久化: 与快照持久化相比,AOF持久化 的实时性更好,因此已成为主流的持久化方案。默认情况下Redis没有开启AOF(append only file)方式的持久化,可以通过appendonly参数开启:

appendonly yes

开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof。

在Redis的配置文件中存在三种不同的 AOF 持久化方式,它们分别是:

appendfsync always #每次有数据修改发生时都会写入AOF文件,这样会严重降低Redis的速度 appendfsync everysec #每秒钟同步一次,显示地将多个写命令同步到硬盘 appendfsync no #让操作系统决定何时进行同步

用户可以考虑 appendfsync everysec选项 ,让Redis每秒同步一次AOF文件,Redis性能几乎没受到任何影响。而且这样即使出现系统崩溃,用户最多只会丢失一秒之内产生的数据。当硬盘忙于执行写入操作的时候,Redis还会优雅的放慢自己的速度以便适应硬盘的最大写入速度。

AOF执行流程: 1、所有的写入命令会追加到aof_buf中; 2、AOF缓冲区根据对应的策略向硬盘做同步操作; 3、随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的; 4、当Redis服务器重启时,可以加载AOF文件进行数据恢复;

缓存穿透

缓存穿透:key对应的数据在缓存和数据库中都不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,就有可能导致数据库崩溃。

解决方法:

一是:布隆过滤器。将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。

二是:缓存空对象。如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

缓存击穿

缓存击穿:目的性强,一个存在的key,在缓存过期的一刻,此时若有大量并发请求过来,这些请求发现缓存过期就会访问数据库,瞬间导致数据库压力骤增。比如微博服务器宕机!

解决方法:

一是:设置热点数据永不过期。这样避免了热点数据过期的情况,但此种方案会占用空间,如果热点数据多了起来,就会占用大量空间。

二是:使用互斥锁(key_mutex)。在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住当前key的访问,访问结束再删除该短期key,保证同时刻只有一个线程访问。

缓存雪崩

缓存雪崩:大量的key设置了相同的过期时间,导致在同一时刻全部失效,造成瞬时数据库的请求量过大,引起雪崩。

解决方法:简单来说将缓存失效时间分散开,比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #如何安装redis #redis的官网为Redis #githubcom #1