初学Jedis
0基本概念
Jedis: 一款java操作redis數(shù)據(jù)庫的工具.
?? ??? ?* 使用步驟:
?? ??? ??? ?1. 下載jedis的jar包
?? ??? ??? ?2. 使用
?? ??? ??? ??? ?//1. 獲取連接
? ? ? ? ?? ??? ?Jedis jedis = new Jedis("localhost",6379);
? ? ? ??? ??? ??? ?//2. 操作
? ? ? ??? ??? ??? ?jedis.set("username","zhangsan");
? ? ? ? ?? ??? ?//3. 關(guān)閉連接
? ? ? ? ?? ??? ?jedis.close();
一.?Jedis操作各種redis中的數(shù)據(jù)結(jié)構(gòu)
1.1 字符串類型 string
setget//1. 獲取連接Jedis jedis = new Jedis();//如果使用空參構(gòu)造,默認(rèn)值 "localhost",6379端口//2. 操作//存儲(chǔ)jedis.set("username","zhangsan");//獲取String username = jedis.get("username");System.out.println(username);//可以使用setex()方法存儲(chǔ)可以指定過期時(shí)間的 key valuejedis.setex("activecode",20,"hehe");//將activecode:hehe鍵值對(duì)存入redis,并且20秒后自動(dòng)刪除該鍵值對(duì)//3. 關(guān)閉連接jedis.close();1.2 哈希類型 hash : map格式 ?
? ?hsethgethgetAll//1. 獲取連接Jedis jedis = new Jedis();//如果使用空參構(gòu)造,默認(rèn)值 "localhost",6379端口//2. 操作// 存儲(chǔ)hashjedis.hset("user","name","lisi");jedis.hset("user","age","23");jedis.hset("user","gender","female");// 獲取hashString name = jedis.hget("user", "name");System.out.println(name);// 獲取hash的所有map中的數(shù)據(jù)Map<String, String> user = jedis.hgetAll("user");// keysetSet<String> keySet = user.keySet();for (String key : keySet) {//獲取valueString value = user.get(key);System.out.println(key + ":" + value);}//3. 關(guān)閉連接jedis.close();1.3列表類型 list : linkedlist格式。支持重復(fù)元素
lpush / rpushlpop / rpoplrange start end : 范圍獲取//1. 獲取連接Jedis jedis = new Jedis();//如果使用空參構(gòu)造,默認(rèn)值 "localhost",6379端口//2. 操作// list 存儲(chǔ)jedis.lpush("mylist","a","b","c");//從左邊存jedis.rpush("mylist","a","b","c");//從右邊存// list 范圍獲取List<String> mylist = jedis.lrange("mylist", 0, -1);System.out.println(mylist);// list 彈出String element1 = jedis.lpop("mylist");//cSystem.out.println(element1);String element2 = jedis.rpop("mylist");//cSystem.out.println(element2);// list 范圍獲取List<String> mylist2 = jedis.lrange("mylist", 0, -1);System.out.println(mylist2);//3. 關(guān)閉連接jedis.close();1.4集合類型 set ?: 不允許重復(fù)元素
saddsmembers:獲取所有元素//1. 獲取連接Jedis jedis = new Jedis();//如果使用空參構(gòu)造,默認(rèn)值 "localhost",6379端口//2. 操作// set 存儲(chǔ)jedis.sadd("myset","java","php","c++");// set 獲取Set<String> myset = jedis.smembers("myset");System.out.println(myset);//3. 關(guān)閉連接jedis.close();1.5有序集合類型 sortedset:不允許重復(fù)元素,且元素有順序
zaddzrange//1. 獲取連接Jedis jedis = new Jedis();//如果使用空參構(gòu)造,默認(rèn)值 "localhost",6379端口//2. 操作// sortedset 存儲(chǔ)jedis.zadd("mysortedset",3,"亞瑟");jedis.zadd("mysortedset",30,"后裔");jedis.zadd("mysortedset",55,"孫悟空");// sortedset 獲取Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);System.out.println(mysortedset);//3. 關(guān)閉連接jedis.close();二.jedis連接池: JedisPool
* 使用:
?? ??? ??? ??? ?1. 創(chuàng)建JedisPool連接池對(duì)象
?? ??? ??? ??? ?2. 調(diào)用方法 getResource()方法獲取Jedis連接
?? ??? ??? ??? ??? ?//0.創(chuàng)建一個(gè)配置對(duì)象
?? ??? ??? ? ? ? ? ?JedisPoolConfig config = new JedisPoolConfig();
?? ??? ??? ? ? ? ? ?config.setMaxTotal(50);
?? ??? ??? ? ? ? ? ?config.setMaxIdle(10);
?? ??? ??? ?
?? ??? ??? ? ? ? ? ?//1.創(chuàng)建Jedis連接池對(duì)象
?? ??? ??? ? ? ? ? ?JedisPool jedisPool = new JedisPool(config,"localhost",6379);
?? ??? ??? ?
?? ??? ??? ? ? ? ? ?//2.獲取連接
?? ??? ??? ? ? ? ? ?Jedis jedis = jedisPool.getResource();
?? ??? ??? ? ? ? ? ?//3. 使用
?? ??? ??? ? ? ? ? ?jedis.set("hehe","heihei");
?? ??? ??? ?
?? ??? ??? ?
?? ??? ??? ? ? ? ? ?//4. 關(guān)閉 歸還到連接池中
?? ??? ??? ? ? ? ? ?jedis.close();
* 連接池工具類
public class JedisPoolUtils {private static JedisPool jedisPool;static{//讀取配置文件InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");//創(chuàng)建Properties對(duì)象Properties pro = new Properties();//關(guān)聯(lián)文件try {pro.load(is);} catch (IOException e) {e.printStackTrace();}//獲取數(shù)據(jù),設(shè)置到JedisPoolConfig中JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));//初始化JedisPooljedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));}/*** 獲取連接方法*/public static Jedis getJedis(){return jedisPool.getResource();}}三.案例
案例需求:
?? ??? ?1. 提供index.html頁面,頁面中有一個(gè)省份 下拉列表
?? ??? ?2. 當(dāng) 頁面加載完成后 發(fā)送ajax請(qǐng)求,加載所有省份
?? ?* 注意:使用redis緩存一些不經(jīng)常發(fā)生變化的數(shù)據(jù)。
?? ??? ?* 數(shù)據(jù)庫的數(shù)據(jù)一旦發(fā)生改變,則需要更新緩存。
?? ??? ??? ?* 數(shù)據(jù)庫的表執(zhí)行 增刪改的相關(guān)操作,需要將redis緩存數(shù)據(jù)情況,再次存入
?? ??? ??? ?* 在service對(duì)應(yīng)的增刪改方法中,將redis數(shù)據(jù)刪除。
總結(jié)
- 上一篇: 二叉树的的前序遍历和后序遍历(题型变种更
- 下一篇: 混合文件下分离xml文件和jpg文件