首先,Redis是一个Nosql数据库。
为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案,就是NoSql数据库。
Redis的作用是缓存。以key—value存储。
一、Redis安装配置
Redis下载
官网地址:http://redis.io/
下载地址 :https://redis.io/download
Redis的安装
安装环境一般为Linux ,我以这个为演示:
因为redis是c语言开发的,所以得安装gcc环境。
yum install gcc-c++
把redis-3.0.0.tar.gz放到服务器中,这步就不演示了,我用的是xftp5
第一步:解压缩
tar -zxf redis-3.0.0.tar.gz
第二部:编译(C语言开发的编译)
进入到redis-3.0.0目录 make
第一步:安装
make install PREFIX=/usr/local/redis 安装到redis目录。
PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下
二、redis的启动。
将redis源码包中的redis.conf配置文件复制到/usr/local/redis/bin/下
(1)cd /root/redis-3.0.0
cp redis.conf /usr/local/redis/bin/
(2)第二步:修改redis.conf,将daemonize由no改为yes
(3)启动命令:在redis根目录 ./redis-server redis.conf
(4)关闭命令:./redis-cli shutdown
连接reids------- redis-cli
./redis-cli
默认连接localhost运行在6379端口的redis服务。
./redis-cli -h 192.168.1.103 -p 6379
-h:连接的服务器的地址
-p:服务的端口号
关闭redis连接:./redis-cli shutdown
Redis的持久化
Redis的所有数据都是保存到内存中的。
Rdb:快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方案。
aof形式:append only file。把所有对redis数据库操作的命令,增删改操作的命令。保存到文件中。
在redis.conf配置文件中配置
这样redis单机版就配好了,redis集群我就不说了,打字说不清楚。
Redis数据类型
Redis中存储数据是通过key-value存储的,对于value的类型有以下几种:
字符串
Hash类型
List
Set
SortedSet(zset)
各种数据类型的演示就算了,太多了。
Java中连接redis
要连接服务器中的redis,需要使用redis提供的一个jar包;
接下来上代码:
public void testJedisPool() throws Exception {
// 第一步:创建一个JedisPool对象。需要指定服务端的ip及端口。
JedisPool jedisPool = new JedisPool("192.168.1.103", 6379);
// 第二步:从JedisPool中获得Jedis对象。
Jedis jedis = jedisPool.getResource();
// 第三步:使用Jedis操作redis服务器。
jedis.set("jedis", "test"); 存储jedis为key,test为value的一个数据
String result = jedis.get("jedis"); 获取key为jedis的值
System.out.println(result);
// 第四步:操作完毕后关闭jedis对象,连接池回收资源。
jedis.close();
// 第五步:关闭JedisPool对象。
jedisPool.close();
}
Spring整合jedis
常用的操作redis的方法提取出一个接口,实现单机版的实现类:
public interface JedisClient {
String set(String key, String value);
String get(String key);
Boolean exists(String key);
Long expire(String key, int seconds);
Long ttl(String key);
Long incr(String key);
Long hset(String key, String field, String value);
String hget(String key, String field);
Long hdel(String key, String... field);
}
单机版实现类
public class JedisClientPool implements JedisClient {
@Autowired
private JedisPool jedisPool; //引入jedispool连接池
@Override
public String set(String key, String value) {
Jedis jedis = jedisPool.getResource();
String result = jedis.set(key, value);
jedis.close();
return result;
}
@Override
public String get(String key) {
Jedis jedis = jedisPool.getResource();
String result = jedis.get(key);
jedis.close();
return result;
}
@Override
public Boolean exists(String key) {
Jedis jedis = jedisPool.getResource();
Boolean result = jedis.exists(key);
jedis.close();
return result;
}
@Override
public Long expire(String key, int seconds) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.expire(key, seconds);
jedis.close();
return result;
}
@Override
public Long ttl(String key) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.ttl(key);
jedis.close();
return result;
}
@Override
public Long incr(String key) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.incr(key);
jedis.close();
return result;
}
@Override
public Long hset(String key, String field, String value) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.hset(key, field, value);
jedis.close();
return result;
}
@Override
public String hget(String key, String field) {
Jedis jedis = jedisPool.getResource();
String result = jedis.hget(key, field);
jedis.close();
return result;
}
@Override
public Long hdel(String key, String... field) {
Jedis jedis = jedisPool.getResource();
Long result = jedis.hdel(key, field);
jedis.close();
return result;
}
}
配置:applicationContext-redis.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context4.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx4.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util4.2.xsd">
<!-- 配置单机版的连接 -->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="host" value="192.168.1.103"></constructor-arg>
<constructor-arg name="port" value="6379"></constructor-arg>
</bean>
<bean id="jedisClientPool" class="com.test.jedisClientPool "/>
</beans>
Spring整合jedis测试:
@Test
public void testJedisClient() throws Exception {
//初始化Spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath: applicationContext-*.xml");
//从容器中获得JedisClient对象
JedisClient jedisClient = applicationContext.getBean(JedisClient.class);
jedisClient.set("test", "test");
String result = jedisClient.get("test");
System.out.println(result);
}
就是个这了 ,redis太多,在这里不好说清。
接下来附图: