redis
- redis属于nosql,
nosql:非关系型数据库,存在内存中, 关系型数据库,存在硬盘
用于缓存,缓存:查询有数据,直接返回,没有数据,查询数据库,存入缓存,返回数据
一般数据缓存只能自己使用,非关系行数据库可以独立部署,数据共享
键值对数据
没有标准
不支持事务
对关系型数据库进行互补,对关系型数据库进行备份
- 数据结构
- 字符串
设置set key value
获取get key
删除del key
- 哈希 map 键值对
hset key field value
hget key field
hdel key field
hgetall key
- 列表 linklist 允许重复
左加lpush
右加rpush
获取
1. lrange key start end 范围获取
2. 0 -1获取所有
删除
1. lpop key
2. rpop
- 集合 set 不允许重复 存入取出顺序不一样
sadd key value
smembers key 获取所有元素
srem key value删除
- 有序集合 有序不重复
存储 zadd key score value 按照score进行升序排序
获取 range key start end (withscore)
删除 zren key value
- 通用命令
keys * 查询所有的键
type key 获取键对应值的类型
del key 删除指定的键值对
持久化
- RDB默认设置,检测key的变化,持久化
配置conf
save sec keys :sec毫秒后至少有keys个改变后,持久化一次
启动命令行启动
redis-server.exe redis.windows.conf
- AOF每一次操作后持久化
配置conf
appendonly no–>改为yes 开启
appendfsync alwanys 每一次都吃就持久化
appendfsync everysec 每秒
appendfsync no 不进行持久化
jedis Java客户端
Java操作redis的工具
下载jar包
api调用
jedis方法名称与redis相同
//创建链接
Jedis jedis = new Jedis("127.0.0.1", 6379);//不写即为本机默认值
//操作
jedis.set("name","zhangsan");
//获取
String name = jedis.get("name");
System.out.println(name);
//设置失效时间的语句
jedis.setex("pass", 20, "123456");//20秒后失效
//关闭
jedis.close();
JedisPool连接池
public void jedisPoolTest(){
//创建配置
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(50);
jedisPoolConfig.setMaxIdle(10);
//创建连接池对象,传入配置
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379);
//获取连接
Jedis jedis = jedisPool.getResource();
//操作
jedis.set("address","山东");
//获取
String address = jedis.get("address");
System.out.println(address);
//归还资源,并非真正关闭
jedis.close();
}
抽取Jedis连接池的工具类
- 工具类代码
/**
* jedis工具类
*/
public class JedisPoolUtils {
private static JedisPool jedisPool;
//读取配置
static {
InputStream resourceAsStream = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
Properties properties = new Properties();
try {
properties.load(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
jedisPoolConfig.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle")));
//创建jedis连接池
jedisPool = new JedisPool(jedisPoolConfig, properties.getProperty("host"), Integer.parseInt(properties.getProperty("port")));
}
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
- 工具类使用代码
public void jedisPoolUtilsTest(){
//获取连接
Jedis jedis = JedisPoolUtils.getJedis();
//操作
jedis.set("age", String.valueOf(16));
//获取
String age = jedis.get("age");
System.out.println(age);
//关闭
jedis.close();
}