redis是一款高性能的NOSQL系列的非关系型数据库,以key:value的形式存放在内存上。
应用场景:
redis的应用场景
• 缓存(数据查询、短连接、新闻内容、商品内容等等)
• 聊天室的在线好友列表
• 任务队列。(秒杀、抢购、12306等等)
• 应用排行榜
• 网站访问统计
• 数据过期处理(可以精确到毫秒
• 分布式集群架构中的session分
redis的数据结构:
- redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
- value的数据结构:
- 字符串类型 string
- 哈希类型 hash : map格式
- 列表类型 list : linkedlist格式。支持重复元素
- 集合类型 set : 不允许重复元素
- 有序集合类型 sortedset:不允许重复元素,且元素有顺序
每种数据结构的命令不太相同,需自行查阅。
持久化
- redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据
持久化保存到硬盘的文件中。
2. redis持久化机制:
- RDB:默认方式,不需要进行配置,默认就使用这种机制
- 在一定的间隔时间中,检测key的变化情况,然后持久化数据
- 编辑redis.windwos.conf文件
after 900 sec (15 min) if at least 1 key changed
save 900 1
after 300 sec (5 min) if at least 10 keys changed
save 300 10
after 60 sec if at least 10000 keys changed
save 60 10000
Jedis ->用JAVA代码控制redis(与JDBC功能类似)
调用方法:getResource()方法获取Jedis连接
//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("hehe","heihei");
//4. 关闭 归还到连接池中
jedis.close();
案例:涉及json转换,redis查询,sql查询
案例需求:
- 提供index.html页面,页面中有一个省份 下拉列表
- 当 页面加载完成后 发送ajax请求,加载所有省份
代码结构:
其中JDBCUtils和相应的dao都比较熟悉了,所以项目的后端部分主要实现就是编写JedisPoolUtils和Service的逻辑。
Dao
public class ProvinceDaoImpl implements ProvinceDao {
//1.定义成员变量 JDBCtemplement
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
@Override
public List<Province> findAll() {
//1.定义sql
String sql = "select * from province";
//2.执行sql