1,概述:是开源,免费,高性能的key-value缓存数据库,是基于内存读写的,性能比较高。可以对内存的数据持久化。
2,安装:
1)Linux下的安装运行:
下载:http://download.redis.io/releases/redis-3.2.8.tar.gz
tar xzf redis-3.2.8.tar.gz
cd redis-3.2.8
make //编译
src/redis-server //启动服务器
src/redis-cil //启动客户端
ps -ef|grep redis //查看绑定IP
2)Windows下安装运行:
下载:https://github.com/MSOpenTech/redis/releases
redis-server.exe redis.windows.conf //启动服务器,并指定配置文件,指定配置文件可以省略
redis-cil.exe -h 127.0.0.1 -p 6379 //启动客户端,并指定主机,指定端口
3,常用命令:
设置访问的密码:config set requirepass "123456" //也可以用配置文件设置
查看访问的密码:config get requirepass
set name value值 //给redis设置键值对
get name //查询键值对
keys * //查询所以的键值
expire name 60 //设置有效期为60秒。不设置就是永久有效
ttl name //查看有效期还有多长过期 -1:表示永久,-2:已经实效
exists name //查看是否存在,0表示不存在,1表示存在
del name //删除
4,java应用:
1),增加依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.1.0</version>
</dependency>
2),代码编写:
package duoxiancheng;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class RedisApi {
//jedis连接池,通过IOC容器注入
public JedisPool jedisPool;
public JedisPool getJedisPool() {
return jedisPool;
}
public void setJedisPool(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
//get
public String get(String key){
//获得jedis实例
Jedis jedis = jedisPool.getResource();
String value = jedis.get(key);
//释放连接
jedisPool.returnResource(jedis);
return value;
}
//set
public String set(String key,String value){
Jedis jedis = jedisPool.getResource();
String result = jedis.set(key,value);
jedisPool.returnResource(jedis);
return result;
}
//set并设置有效期
public String set(String key,int seconds,String value){
Jedis jedis = jedisPool.getResource();
String result = jedis.setex(key,seconds,value);
jedisPool.returnResource(jedis);
return result;
}
//exists
public Boolean exists(String key){
Jedis jedis = jedisPool.getResource();
Boolean result = jedis.exists(key);
jedisPool.returnResource(jedis);
return result;
}
//ttl
public long ttl(String key){
Jedis jedis = jedisPool.getResource();
long result = jedis.ttl(key);
jedisPool.returnResource(jedis);
return result;
}
//del
public long del(String key){
Jedis jedis = jedisPool.getResource();
long result = jedis.del(key);
jedisPool.returnResource(jedis);
return result;
}
public static void main(String[] args) {
//连接本地的redis服务,一般不用这种
Jedis jedis = new Jedis("http://localhost",6379);
//查看服务是否运行
System.out.println(jedis.ping());
jedis.set("foo","bar");
String vulue = jedis.get("foo");
}
}
3),IOC注入:
<!--redis配置-->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!--最大的活动连接数-->
<property name="maxActive" value="100"/>
<!--最大的空闲连接数-->
<property name="maxIdle" value="100"/>
<!--最长等待时间-->
<property name="maxWait" value="180"/>
<!--检查连接池连接的有效性-->
<property name="testOnBorrow" value="true"/>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">
<constructor-arg ref="jedisPoolConfig"/>
<!--主机-->
<constructor-arg value="192.168.70.133"/>
<!--端口-->
<constructor-arg value="6379"/>
<constructor-arg value="3000"/>
<!--访问密码-->
<constructor-arg value="123456"/>
</bean>
<bean id="redisApi" class="com.trip.utils.RedisApi">
<property name="jedisPool" ref="jedisPool"/>
</bean>
4),测试:
默认只能本机访问,如果要远程访问需要设置如下:
A,修改 redis.conf 配置文件
把bind值改为0.0.0.0
B,src/redis-server redis.conf //指定配置文件启动服务器
C,src/redis-cil -h 192.168.70.133 //指定IP启动客户端
C,关闭防火墙