redis 数据库基础
文章目录
<1> 简介
Redis 是一个高性能的 key-value 类型数据库, 属于 nosql 类型数据库, 与 mysql 等关系型数据库的储存方式不同.
nosql 数据库将数据存储于缓存之中, 关系型数据库将数据存储在硬盘中, 自然查询速度远不及nosql数据库.
nosql 的存储格式是 key, value 形式、文档形式、图片形式等多种类型, 而数据库则只支持基础类型.
但 nosql 数据库兴起时间较晚, 不如关系型数据库技术更加成熟.
redis for Linux 下载地址: http://www.redis.cn/download.html
redis for Windows 下载地址: https://github.com/MicrosoftArchive/redis/releases
注: 启动时先运行目录下的 redis-server, 再启动 redis-cli.
redis 教程: https://www.redis.net.cn/tutorial/3501.html
<2> redis 数据结构及基本操作语句
redis 存储的是 key(键)-value(值) 格式的数据, 其中 key 都是字符串, value 有 5 种不同的数据结构
(1) 字符串类型 string
1. 储存: set [key] [value]
2. 获取: get [key]
3. 删除: del [key]
(2) 哈希类型 hash
1. 储存: hset [key] [field] [value]
2. 获取: hget [key] [field] 获取指定field对应的值
hgetall [key] 获取所有的field的value
3. 删除: del [key] [field] 删除指定的field及其对应的值
del [key] 删除整个hash表
(3) 列表类型 list
1. 添加:
从列表左侧添加: lpush [key] [value]
从列表右侧添加: rpush [key] [value]
2. 获取([start,end]之间包括两端的元素): lrange [key] [start] [end]
注: 从0到-1为列表内的所有元素
首元素为0号元素
3. 删除:
从列表左侧删除: lpop [key]
从列表右侧删除: rpop [key]
(4) 集合类型 set
set 是 string 类型的集合, 且每个元素唯一, 不允许重复, 元素之间无顺序
1. 储存: sadd [key] [value]
2. 获取: smembers [key] 获取set集合的所有元素
3. 删除: srem [key] [value] 删除set集合中指定元素
(5) 有序集合类型 sortedset
与 set 类似, 也不允许重复, 但 元素之间有顺序
1. 储存: zadd [key] [score] [value]
[score]是储存元素的次序,从1开始,若原序号已存在,则自动向后排一位,不改变原位置的现有元素
2. 获取: zrange [key] [start] [end] 获取[start,end]之间的元素
3. 删除: zrem [key] [value]
(6) 其他常见命令
1. keys * : 查询所有的键
2. type [key] : 获取键对应的value的类型
3. del [key]:删除指定的key value
<3> 使用 Java 操作 redis — Jedis
Jedis 下载地址: https://search.maven.org/search?q=jedis
连接池下载地址: https://search.maven.org/search?q=commons-pool
(1) Java 语句
//1.获取连接
Jedis jedis =new Jedis();//使用空参构造时默认localhost,6379
//此处是内容
jedis.set("username","zhangan");
String username = jedis.get("username");
System.out.println(username);
jedis.setex("activecode",20,"hahe");//添加并20s后删除
//2.关闭连接
jedis.close();
(2) 连接池
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(10);//最大空闲连接
config.setMaxTotal(50);//最大允许的连接数
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
Jedis jedis=jedisPool.getResource();
//此处写redis语句
jedis.close();//关闭
(3) 连接池工具类
public class JedisPoolUtils {
private static JedisPool jedisPool;
static{
//读取配置文件
InputStream is=JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
//创建Properties对象
Properties pro =new Properties();
try {
pro.load(is);
} catch (IOException e) {
e.printStackTrace();
}
//获取数据,设置到jedispoolconfig中
JedisPoolConfig config=new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdel")));
//初始化
jedisPool=new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
}
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
jedis.properties:
host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10