Redis
概念
redis是一款高性能的NOSQL系列的非关系型数据库
下载安装
redis中文网: http://www.redis.cn/
解压可直接使用
redis.windows.conf: 配置文件
redis-cli.exe: redis客户端
redis-server.exe: redis服务器端
命令操作
redis数据结构
redis存储的是key, value格式的数据, 其中key都是字符串, value有5种不同的数据结构
string(字符串)
hash(哈希)
list(列表, 允许重复)
set(集合, 不允许重复)
zset(sorted set:有序集合)
string类型
存储:
set key value
获取:
get key
删除:
del key
hash类型
存储:
hset key filed value
获取:
hget key field: 获取指定的field对应的值
hgetall key field: 获取所有的filed和value
删除: hdel key filed
list类型
存储:
lpush key value: 将元素加入列表左边
rpush key value: 将元素加入列表右边
获取:
lrange key start end: 获取指定的field对应的值
(lrange key 0 -1: 获取所有元素)
删除:
lpop key: 删除列表最左边的元素, 并将元素返回
rpop key: 删除列表最右边的元素, 并将元素返回
set类型
存储:
sadd key value: 存储
获取:
smembers key: 获取set集合中所有元素
删除:
srem key value: 删除集合中的某个元素
sortedset类型
存储:
zadd key score value: 存储
zadd scoreboard 20 zhangsan 21 lisi
获取:
zrange key start end: 获取sortedset集合中指定范围的元素
zrange scoreboard 0 100
zrange key start end withscores: 获取指定范围的元素, 同时显示score
zrange scoreboard 0 100 withscores
删除:
zrem key value: 删除集合中的某个元素
zrem scoreboard zhangsan
通用操作
keys *: 获取所有key
type key: 获取key对应的value的类型
del key: 删除指定的key value
持久化操作
redis是一个内存数据库, 当redis服务器重启, 或电脑重启, 数据会丢失, 我们可以将redis内存中的数据持久化保存到硬盘文件中
redis持久化机制:
RDB: 默认方式, 不需要进行配置
在一定的间隔时间中, 检测key的变化情况, 然后持久化数据
1. 编辑redis.windows.conf文件,
# save ""
save 900 1
# after 900 sec (15 min) if at least 1 key changed
save 300 10
# after 300 sec (5 min) if at least 10 keys changed
save 60 10000
# after 60 sec if at least 10000 keys changed
2. 新建txt文件
start redis-server.exe redis.windows.conf
修改后缀名为bat
双击打开
或者在redis目录下打开cmd窗口, 输入 redis-server.exe redis.windows.conf
(指定配置文件名称)
3. 关闭客户端后, 会自动生成dump.rdb文件
AOF: 日志记录方式, 可以记录每一条命令的操作, 每一次命令操作后就持久化数据
1. 编辑redis.windows.conf
appendonly yes (no: 关闭aof, yes: 打开aof)
# appendfsync always : 每一次操作都进行持久化
appendfsync everysec : 每隔一秒进行一次持久化
# appendfsync no : 不进行持久化
2. 与上面相同
3. 关闭客户端后会自动生成appendonly.aof文件
Java客户端 Jedis
Jedis: 一款java操作redis数据库的工具
使用步骤
1. 下载jedis的jar包/maven导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.3</version>
</dependency>
2. 使用
public class JedisTest {
//快速入门
@Test
public void test1() {
//1. 获取连接
Jedis jedis = new Jedis("localhost", 6379);//如果使用空参构造, 默认值"localhost", 6379
//2. 操作
jedis.set("username", "zhangsan");
//3. 关闭连接
jedis.close();
}
}
Jedis操作redis中的数据结构
string(字符串)
set get
hash(哈希)
hset hget getAll
list(列表, 允许重复)
lpush rpush
lpop rpop
set(集合, 不允许重复)
sadd smembers
zset(sorted set:有序集合)
zadd
public String setex(String key, int seconds, String value)
//将key value存入redis, 并且在seconds秒之后自动删除
//可以用来存储有时效的验证码/激活码
jedis连接池 JedisPool
使用步骤
1. 创建JedisPool连接池对象
2. 调用方法getResource()获取Jedis连接
//jedis连接池使用
@Test
public void test5() {
//0. 创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(50);
//设置最大空闲数
config.setMaxIdle(10);
//1. 创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost", 6379);
//2. 获取连接
Jedis jedis = jedisPool.getResource();
//3. 使用
jedis.set("name","hehe");
String name = jedis.get("name");
System.out.println(name);
//4. 关闭, 归还到连接池中
jedis.close();
}
}
redis常用命令
https://blog.csdn.net/qq_40140473/article/details/81201017
redis管理工具客户端下载
https://www.jb51.net/softs/669908.html#downintro2
redis官网, 命令大全
http://www.redis.cn/commands.html
redis视频教程
https://www.bilibili.com/video/BV13b411L7uK