Jedis
-
介绍:Jedis是一款java操作redis数据库的工具(类似JDBC)
-
使用步骤:
- 下载jedis的jar包
- 使用
-
快速入门
// 1.获取连接 Jedis jedis = new Jedis("localhost",6379); // 2.操作 jedis.set("name","zhangsan"); // 3.关闭连接 jedis.close();
-
jedis操作各种数据结构
/** * string操作 */ @Test public void test2(){ // 1.获取连接 Jedis jedis = new Jedis(); // 空参数的时候默认local:6379 // 2.操作 jedis.set("name","zhangsan"); String name = jedis.get("name"); System.out.println(name); // 可以使用setex()方法,存储可以指定过期时间的key value jedis.setex("activecode",20,"haha"); // 键值对存入redis,20秒后自动删除 // 3.关闭连接 jedis.close(); } /** * 哈希 */ @Test public void test3(){ // 1.获取连接 Jedis jedis = new Jedis("localhost",6379); // 2.操作 jedis.hset("user","name","ls"); jedis.hset("user","age","23"); jedis.hset("user","gender","male"); // 获取 String name = jedis.hget("user", "name"); System.out.println(name); Map<String, String> user = jedis.hgetAll("user"); Set<String> keySet = user.keySet(); for (String key :keySet){ System.out.print(key+": "+user.get(key)+" "); System.out.println(jedis.hget("user",key)); } System.out.println(user); // 3.关闭连接 jedis.close(); } /** * 链表 */ @Test public void test4(){ // 1.获取连接 Jedis jedis = new Jedis("localhost",6379); // 2.操作 while (jedis.rpop("queue")!=null){ jedis.rpop("queue"); } jedis.lpush("queue","E","C","A"); jedis.rpush("queue","M","V","P"); List<String> queue = jedis.lrange("queue", 0, -1); System.out.println(queue); // 3.关闭连接 jedis.close(); } /** * 集合 */ @Test public void test5(){ // 1.获取连接 Jedis jedis = new Jedis("localhost",6379); // 2.操作 jedis.sadd("classmates","a"); jedis.sadd("classmates","b"); System.out.println(jedis.smembers("classmates")); jedis.zrem("classmates","b"); System.out.println(jedis.smembers("classmates")); // 3.关闭连接 jedis.close(); } /** * 有序链表 */ @Test public void test6(){ // 1.获取连接 Jedis jedis = new Jedis("localhost",6379); // 2.操作 jedis.zadd("set",90,"ys"); jedis.zadd("set",70,"xsr"); System.out.println(jedis.zrange("set",0,-1)); // 3.关闭连接 jedis.close(); }
-
jedis连接池:jedisPool
-
使用:
- 创建JedisPool连接池对象
- 调用
-
代码:
public class JedisPoolUtils { private static JedisPool jedisPool; static { // 读取配置文件 InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties"); Properties pro = new Properties(); try { pro.load(is); } catch (IOException e) { e.printStackTrace(); } JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal"))); config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle"))); // 初始化jedisPool jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("post"))); } /** * 获取连接方法 */ public static Jedis getJedis(){ return jedisPool.getResource(); } }
-
-
案例:redis缓存优化
/** * 使用redis缓存 */ public String findAllJson(){ // 1.先从redis中查询数据 // 1.1获取redis客户端连接 Jedis jedis = JedisPoolUtils.getJedis(); String province_json = jedis.get("province"); // 2.判读一下province是否为null if(province_json == null|| province_json.length()==0){ // redis没有数据,需要查询数据库,并且更新缓存 // 2.1从数据库查询 List<Province> ps = dao.findAll(); // 2.2将list序列化到json ObjectMapper mapper = new ObjectMapper(); try{ province_json = mapper.writeValueAsString(ps); }catch(JsonProcessingException e){ e.printStacktrace(); } // 2.3 将json数据存入redis中 jedis.set("province",province_json); // 释放连接,省略了try/catch和finally确认最终关闭的操作 jedis.close(); }else{ // redis中有数据,查询缓存 } return province_json; }
- 注意:使用redis缓存一些不经常改变的数据,
- 数据库的数据一旦发生改变,则需要更新缓存。
- 数据库的表执行了一些增删改查的操作,需要将redis缓存数据清空,再次录入
- 在service对应的增删改查方法中,将redis数据删除
- 注意:使用redis缓存一些不经常改变的数据,
Maven
-
apache出的一款项目管理工具
-
作用:
- 管理jar包:maven没有直接导入jar包,而是通过文件的配置引入所需要的jar包
- 编译
- 测试
- 部署
-
组成:
- 一个项目对象模型:POM.xml
- 一组标准集合:
- 一个项目生命周期:Project Lifecycle
- 一个依赖管理系统:
- 运行定义在生命周期阶段(phase)中的插件(plugin)目标(goal)的逻辑
-
项目结构:
-
Maven常用命令:
- compile:编译命令,产出字节码文件
- package:打包命令(会自动先执行打包),打成war包
- install:安装命令,将项目安装到本地的仓库中。
-
Maven生命周期:三套独立的生命周期
- Clean Lifecycle : 构建之前的清理工作
- Defualt Lifecycle :构建的核心部分,编译,测试,打包,部署等等
- Site Lifecycle :生成项目报告,站点,发布站点
- 同一套生命周期中,执行后边的操作,会自动执行前面所有操作
- 例如defulat: 编译 测试 打包 安装 ,任意执行一个都会把之前的执行一遍
- clean清理:
- site站点发布;
-
坐标:被Maven管理的资源的唯一标识
-
groupId:组织名
-
atifactId:模块名称
-
version:版本号
<groupId>redis.clients</groupId> 每一层代表一个目录,如果里面包含了多个点,每个点就是一个目录 <artifactId>jedis</artifactId> <version>2.7.0</version>
-
-
IDEA创建MAVEN项目
- new module
- 选择maven
- pom文件自动打开,添加配置选项.<package>有几种选项
- jar:java项目打包为jar包,默认
- war:web项目需要设置为war
- pom:maven高级配置
-
添加插件build标签配置
<!--添加插件 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> </plugin></plugins> </build>
-
Maven创建web项目
- 创建不使用骨架的web模块
- 添加<packaging>使用war
- 添加webapp.WEB-INF.web.xml目录
- 添加tomcat插件
- 修改一下配置,将右侧maven/pluginstomcat7/run命令可以集成到头部按钮
-
依赖配置范围
-
pom文件里面,对于添加的依赖还可以进行依赖范围的配置
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> #默认值为compile,指编译环境有效 </dependency>
-
依赖范围:我配置的jar包对哪些环境有效,默认值为compile
-