Redis
redis是一款高性能的NOSQL系列的非关系型数据库
redis.windows.conf:redis的配置文件
redis-cli.exe:redis的客户端
redis-server.exe:redis的服务器端
命令操作:
redis的数据结构
redis存储的是key,value格式的数据,其中key为字符串,value有5种不同的数据结构
value的数据结构:
- 1.字符串类型String
- 2.哈希类型hash:map格式
- 3.列表类型list
- 4.集合类型set
- 5.有序集合类型sortedset
1.字符串类型String
存储:set key value
获取:get key
删除:del key
2.哈希类型 hash
存储:
- hset key field value
获取:
- hget key field获取对应的值,
- hgetall key获取所有值
删除:
- hdel key field
3.列表类型list
添加:
- lpush key value:将元素加入列表左边
- rpush key value:将元素加入列表右边
获取:
- lrange key start end:范围获取
删除
- lpop key:删除列表最终左边的元素,并将元素返回
- rpop key:删除列表最终右边的元素,并将元素返回
4.集合类型 set :
不允许重复元素,无序
存储:sadd key value
获取:smembers key:获取set集合中所有元素
删除:srem key value:删除set中某个元素
5.有序集合类型 sortedset
不允许重复元素,且元素有顺序
存储:zaa key score value
获取:zrange key start end
删除:zrem key value
通用命令
keys * :查询所有的键
type key:获取键对应的value的类型
del key:删除指定的key value
持久化
redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中
redis持久化即使
RDB:默认方式
不需要进行配置,默认就是用这种机制
在一定的间隔事件中,检测key的变化情况,然后去持久化数据
步骤
- 编辑redis.windows.conf文件
save 900 1(900秒,也就是15分中后,一个改变则持久化一次)
save 300 10
save 60 10000 - 重启redis服务器,并指定配置文件名称(redis-server.exe redis.windows.conf)
AOF:日志记录的方式
可以记录每一条命令的操作。可以每一次命令操作时,持久化
步骤
- 编辑redis.windows.conf文件
appendonly no(关闭aof)—>appendonly yes(开启aof)
#appendfsync always :每一次操作都进行持久化
appendfsync everysec:每隔一秒进行一次持久化
#appendfsync no:不进行持久化
Jedis
一款java操作redis数据库的工具。
使用步骤:
- 下载jedis的jar包
- 使用:
- 获取连接(若使用空参,默认为"localhost",6379端口)
- 操作
- 关闭连接
//获取连接
Jedis jedis=new Jedis("localhost",6379);
//操作
jedis.set("username","zhangsan");
//关闭连接
jedis.close();
可以使用setex()方法存储指定过期事件的key value
//将activecode:hehe键值对存入redis,并且20秒后自动删除改键值对
jedis.setex("activecode",20,"hehe");
jedis连接池:JedisPool
使用:
- 创建JedisPool连接池对象
- 调用getResource()方法获取jedis的连接
public void test07(){
JedisPoolConfig config=new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);
JedisPool jedisPool=new JedisPool(config);
Jedis jedis = jedisPool.getResource();
jedis.close();
}
config可设参数
- maxIdle :连接池中最大的空闲连接数,默认为 8。
- minIdle:连接池中最少空闲连接数,默认为 0。
- maxTotal:连接池中最大连接数,默认为 8。
- maxWaitMillis:当连接池资源用尽后,调用者的最大等待时间(单位为毫秒),一般不建议使用默认值,该默认值为-1,表示永远不超时,一直等待。
- testOnBorrow:向连接池借用连接时是否做连接有效性检测(ping),无效连接会被移除,每次借用多执行一次 ping 命令,默认值为 false。
- testOnReturn:向连接池归还连接时是否做连接有效性检测(ping),无效连接会被移除,每次归还多执行一次 ping 命令,默认值为 false。
- testOWhileIdle:向连接池借用连接时是否做连接空闲检测,空闲超时的连接会被移除,默认值为 false。
- blockWhenExhausted:当连接池用尽后,调用者是否要等待,这个参数是和 maxWaitMillis 对应的,只有当此参数为 true 时,maxWaitMillis 才会生效。默认值为 true。
- minEvictableIdleTimeMillis:连接的最小空闲时间,达到此值后空闲连接将被移除,默认值 30 分钟。
- timeBetweenEvictionRunsMillis:空闲连接的检测周期(单位为毫秒),默认值为 -1,表示不做检测。
- numTestsPerEvictionRun:做空闲连接检测时,每次的采样数,默认为 3。
Jedis工具类:
public class JedisPoolUtils {
private static JedisPool jedisPool;
static {
Properties pro=new Properties();
try {
pro.load(JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties"));
} catch (IOException e) {
e.printStackTrace();
}
JedisPoolConfig config=new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
jedisPool=new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
}
//获取连接方法
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
版权声明:本文为qq_53273362原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。