Redis是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据以key-value形式保存在内存中。 Redis和传统的关系型数据库不一样,它不遵循传统数据库的sql标准,事务,表结构等等。Redis的value数据支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
Redis通常用于数据缓存(Cache),作用是减少服务器业务代码对数据库的访问频率。简单的理解,就是将数据库查询的结果缓存到Redis中,等下次查询的时候,直接从Redis中获取数据,而不再查询数据了。因为Redis的内存存储比MySQL的硬盘存储要快的多。缓存中的数据在redis中的存储方式有两种,一种是永久存在,不设置过期时间,第二种是设置过期时间。这两种方式都需要尽可能的保证数据的一致性(和数据源中的数据保持同步)。
Redis给缓存数据设置内存空间大小非常关键。修改redis配置文件(redis.conf)中的 maxmemory 参数即可,限制 redis 最大可用内存大小(单位字节),当超出了这个限制时redis会依据 maxmemory-policy 参数指定的策略来删除不需要的key直到redis占用的内存小与指定内存。这个策略包括如下两种:
LRU:(Least recently used)算法根据数据的最近访问时间作为依据来清理数据,最近没有被访问的话,就清理掉。
LFU:(Least Frequently Used)算法根据数据的访问频率作为依据来清理数据,数据访问频率低的话,就清理掉。
Redis给缓存数据设置过期时间长短也非常关键。过期时间不要统一设置固定的时间,比如10分钟,这样会造成相同时间点大量缓存被清空,数据库访问量突然增大的情况,我们应该针对不同访问频率的数据设置不同的过期时间。这个跟自身业务情况有关。以下介绍缓存设置不当可能会造成的三个问题,如下所示
缓存穿透,是指查询一个数据库不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询的到的对象放进缓存。如果数据库查询对象为空,则不放进缓存。
缓存雪崩,是指在某一段时间段,缓存集中过期失效,解决方式就是上面设置过期时间中使用的方式,灵活设置过期时间。
缓存击穿,是指一个key数据访问频率非常高,当这个key在失效的瞬间,持续的大量访问就穿破缓存,直接请求数据库,数据库无法承载大流量访问而宕机。解决方式直接设置为永久key就可以了。
在我们之前学习MySQL数据库,以及类似MyBatis框架的时候,都涉及到了缓存的问题,他们都支持缓存。这些缓存同样也是为了减少直接访问数据库数据,但是他们对于整体项目工程的性能提升还是非常有限的。对于大流量访问下的缓存设计,还是倾向于使用Redis这样的缓存服务器。
这里在补充一下WEB缓存分类:数据库缓存,服务器缓存,客户端缓存
1. 数据库缓存:数据库服务器会将查询到的数据暂存在内存中,下次有相同数据查询时可以直接从内存中返回,极大的提高了性能和效率。常见的技术有memcache和redis。
2. 服务器缓存:由于服务器缓存并非客户端或者源服务器的一部分,而是处于网络中,请求需要以某种方式路由到它们。例如CDN缓存。
3. 客户端缓存:这里的客户端缓存一般指的是浏览器缓存,即浏览器端将符合规范条件的资源存储在客户端本地的一种存储机制
Windows安装Redis
Redis 官方不建议在 windows 下使用 Redis,所以官网没有 windows 版本可以下载。
还好微软团队维护了开源的 windows 版本,虽然只有 3.2.x 版本,对于测试开发使用足够了。
下载地址:https://github.com/MicrosoftArchive/redis/releases
接下来我们就来安装Redis
这里可以修改安装路径
这里可以修改端口,我们保持默认即可
这里可以设置最大使用内存
可以点击开始安装了
点击Finish安装完毕。
Redis在Windows上以服务的形式运行。
我们使用 Win+R 弹出运行框,输入“services.msc” 回车就能打开Windows服务列表。
其实,我们之前安装的MySQL,Apache HTTP,Apache Tomcat等都是以服务形式运行的。
接下来,我们去Redis安装目录看看
在这个目录下,有几个文件非常重要
redis-server.exe:服务端程序,提供 redis 服务。
redis-cli.exe: 客户端程序,通过它连接 redis 服务并进行操作。
redis.windows-service.conf:配置文件,将 redis 作为系统服务的配置。
接下来我们使用redis-cli客户端程序来连接Redis服务端。
我们还是老办法,直接在上面的地址栏中输入“CMD”
然后直接输入:redis-cli.exe -h 127.0.0.1 -p 6379
密码是空
接下来,我们简单测试一下存储和读取数据。
set message hello
get message
备注:set和get是存储和读取命令,message是key,hello是value(字符串类型)。
接下来,推荐一个Redis的图形管理工具 “Redis Desktop Manager” (版本0.9.3是免费的)。
修改安装路径
安装完毕,点击“Finish” 完成并启动
创建一个本地链接
连接成功了。
Redis默认创建了16个数据库(db0~db15),我们使用哪个就点进入查看即可。