1. 什么是redis
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
字符串类型
散列类型
列表类型
集合类型
有序集合类型。
2. redis的应用场景
缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
分布式集群架构中的session分离。
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)
3. Redis的安装
redis是C语言开发,建议在linux上运行,本教程使用Centos7.0作为安装环境。安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++
3.1. 版本说明
本教程使用redis3.2.8版本。3.2.8版本主要增加了redis集群功能。
3.2. 源码下载
从官网下载:https://redis.io/
将redis-3.2.8.tar.gz拷贝到/usr/local下
3.3. 解压源码
tar -zxvf redis-3.2.8.tar.gz3.4. 安装到指定目录(这个目录自己决定,如/usr/local/redis)
cd /usr/local/redis-3.2.8.tar.gz
3.5. 拷贝配置文件到安装目录下
进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下
cd /usr/local/redis
cp /usr/local/redis-3.2.8/redis.conf /usr/local/redis/bin3.6. 安装完后bin目录下的文件列表
3.7. 各个文件的作用如下
至此,redis服务器就已经安装完毕。
4. Redis的启动
4.1. 前端模式启动
直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。如下图:
4.2. 后端模式启动
修改redis.conf配置文件, daemonize yes 以后端模式启动。
执行如下命令启动redis:
cd /usr/local/redis
./bin/redis-server ./bin/redis.conf
bin/redis-cli
redis默认的端口号为6379,可以在redis.conf中配置。
5. 通过jedis连接redis单机
5.1. jar包
pom坐标:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.0</version>
</dependency>
jar包如下:
5.2. 单实例连接
通过创建单实例jedis对象连接redis服务,如下代码:
//单实例连接redis
@Test
public void testJedisSingle() {
Jedis jedis = new Jedis("192.168.93.130", 6379);
jedis.set("name","daixiaoyong");
String name = jedis.get("name");
System.out.println(name);
jedis.close();
}
5.3 外部连接不上redis的解决方法
由于linux防火墙默认开启,redis的服务端口6379并不在开放规则之内,所有需要将此端口开放访问。
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
5.4. 使用连接池连接
通过单实例连接redis不能对redis连接进行共享,可以使用连接池对redis连接进行共享,提高资源利用率,使用jedisPool连接redis服务,如下代码:
@Test
publicvoid pool() {
JedisPoolConfig config = newJedisPoolConfig();
//最大连接数
config.setMaxTotal(30);
//最大连接空闲数
config.setMaxIdle(2);
JedisPool pool = newJedisPool(config,"192.168.101.3", 6379);
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.set("name","lisi");
String name = jedis.get("name");
System.out.println(name);
}catch(Exception ex){
ex.printStackTrace();
}finally{
if(jedis !=null){
//关闭连接
jedis.close();
}
}
}