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
redis 存储的是 key(键)-value(值) 格式的数据, 其中 key 都是字符串, value 有 5 种不同的数据结构
1. 储存: set [key] [value] 2. 获取: get [key] 3. 删除: del [key]
1. 储存: hset [key] [field] [value] 2. 获取: hget [key] [field] 获取指定field对应的值 hgetall [key] 获取所有的field的value 3. 删除: del [key] [field] 删除指定的field及其对应的值 del [key] 删除整个hash表
1. 添加: 从列表左侧添加: lpush [key] [value] 从列表右侧添加: rpush [key] [value] 2. 获取([start,end]之间包括两端的元素): lrange [key] [start] [end] 注: 从0到-1为列表内的所有元素 首元素为0号元素 3. 删除: 从列表左侧删除: lpop [key] 从列表右侧删除: rpop [key]
set 是 string 类型的集合, 且每个元素唯一, 不允许重复, 元素之间无顺序
1. 储存: sadd [key] [value] 2. 获取: smembers [key] 获取set集合的所有元素 3. 删除: srem [key] [value] 删除set集合中指定元素
与 set 类似, 也不允许重复, 但 元素之间有顺序
1. 储存: zadd [key] [score] [value] [score]是储存元素的次序,从1开始,若原序号已存在,则自动向后排一位,不改变原位置的现有元素 2. 获取: zrange [key] [start] [end] 获取[start,end]之间的元素 3. 删除: zrem [key] [value]
1. keys * : 查询所有的键 2. type [key] : 获取键对应的value的类型 3. del [key]:删除指定的key value
Jedis 下载地址: https://search.maven.org/search?q=jedis
连接池下载地址: https://search.maven.org/search?q=commons-pool
//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();
JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(10);//最大空闲连接 config.setMaxTotal(50);//最大允许的连接数 JedisPool jedisPool = new JedisPool(config, "localhost", 6379); Jedis jedis=jedisPool.getResource(); //此处写redis语句 jedis.close();//关闭
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