Redis
redis的指令操作
通用指令:
1.查詢全部的key:keys *
2.擷取鍵key對應的value的類型:type key
3.删除指定key value:del key
redis的資料結構:key+value
其中key都是字元串
value有5種不同的類型:字元串類型、哈希類型、清單類型、集合類型、有序集合類型
1.字元串類型:
添加:set key value
擷取:get key
删除:del key
2.哈希類型
添加:hset key field value
擷取:hget key field
删除:hdel key field
擷取全部:hgetall key
3.清單類型
lpush key value:将元素加入到清單左端
rpush key value:将元素加入到清單右端
lrange key start end:查詢全部元素
lpop key :删除清單最左端元素,并将其傳回
rpop key:删除最右端元素,将其傳回
4.集合類型
添加:sadd key value
擷取全部:smembers key
删除元素:srem key
5.有序集合類型(通過score的值進行排序)
添加元素:zadd key score value
删除元素:zrem key value
查詢元素:zrange key start end
查詢元素+score:zrange key start end withscores
public class JedisTest {
/**
* Jedis入門
*/
@Test
public void test(){
//1.擷取連接配接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
jedis.set("username","zhangsan");
//3.關閉
jedis.close();
}
/**
* String類型的資料結構
*/
@Test
public void test2(){
//1.擷取連接配接,連接配接本機時可以不寫參數
Jedis jedis=new Jedis();
//2.操作
jedis.set("username","zhangsan");
String username = jedis.get("username");
System.out.println(username);
/**
* 存儲指定過期時間的 key value
* 将activeCode:1234存入Redis,20秒時候會自動删除
*/
jedis.setex("activeCode",20,"1234");
//3.關閉
jedis.close();
}
/**
* Hash類型的資料結構
*/
@Test
public void test3(){
//1.擷取連接配接,連接配接本機時可以不寫參數
Jedis jedis=new Jedis();
//2.操作
jedis.hset("user","name","lisi");
jedis.hset("user","age","12");
String age = jedis.hget("user", "age");
System.out.println(age);
//擷取全部
Map<String, String> users = jedis.hgetAll("user");
//周遊 使用keyset
Set<String> keys = users.keySet();
for (String key : keys) {
String value = users.get(key);
System.out.println(key+":"+value);
}
//3.關閉
jedis.close();
}
/**
* list類型的資料結構
*/
@Test
public void test4(){
//1.擷取連接配接,連接配接本機時可以不寫參數
Jedis jedis=new Jedis();
//2.操作
jedis.lpush("mylist","a","b","c");//從左邊添加元素
jedis.rpush("mylist","a","b","c");//從右邊添加元素
//根據範圍擷取全部資料
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);
//彈出操作
String ele1 = jedis.lpop("mylist");
System.out.println(ele1);
String ele2 = jedis.rpop("mylist");
System.out.println(ele2);
List<String> mylist1 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist1);
//3.關閉
jedis.close();
}
/**
* set類型的資料結構
*/
@Test
public void test5(){
//1.擷取連接配接,連接配接本機時可以不寫參數
Jedis jedis=new Jedis();
//2.操作
jedis.sadd("myset","迪麗熱巴");
jedis.sadd("myset","易烊千玺");
jedis.sadd("myset","張藝興");
//根據範圍擷取集合
Set<String> myset = jedis.smembers("myset");
System.out.println(myset);
//3.關閉
jedis.close();
}
/**
* sortedSet類型的資料結構
*/
@Test
public void test6(){
//1.擷取連接配接,連接配接本機時可以不寫參數
Jedis jedis=new Jedis();
//2.操作
jedis.zadd("sortSet",3,"地理");
jedis.zadd("sortSet",5,"英語");
jedis.zadd("sortSet",2,"化學");
//擷取元素
Set<String> sortSet = jedis.zrange("sortSet", 0, -1);
System.out.println(sortSet);
//3.關閉
jedis.close();
}
}
redis的持久化
1.Redis是一個記憶體資料庫,當Redis服務重新開機,獲得電腦重新開機,資料就會丢失。我們可以将redis持久化的儲存在硬碟的檔案中。
2.Redis的持久化機制:
a.RDB:預設方式,不需要進行配置。預設使用這種機制
在間隔時間内,檢測key 的變化情況,然後持久化資料
方法:1.編輯redis-windows.conf檔案
2.重新啟動redis伺服器,并指定配置檔案的名稱
D:\redis-2.8.9\redis-server.exe redis.windows.conf
b.AOF:使用日志的方式,可以記錄每一條指令的操作。可以在每一次操作後,持久化資料
1.編輯 redis-windows.conf檔案
appendonly no (關閉AOF)
appendonly no (開啟AOF)
Jedis java用戶端
一款java操作redis資料庫的工具,導入jar包就可以操作redis中的資料。
Jedis連接配接池:JedisPool
1.建立JedisPool對象
2.調用getResource()方法擷取Jedis連接配接
public class JedisPoolUtil {
private static JedisPool jedisPool;
//靜态代碼塊,調用類時加載
static {
//加載配置檔案
InputStream in = JedisPoolUtil.class.getClassLoader().getResourceAsStream("jedis.properties");
//建立properties
Properties pro = new Properties();
//關聯檔案
try {
pro.load(in);
} catch (IOException e) {
e.printStackTrace();
}
//擷取資料,設定到JedisPoolConfig中
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
//初始化JedisPool
jedisPool=new JedisPool(config,pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
}
//連接配接的方法
public static Jedis getJedis(){
return jedisPool.getResource();
}
public static void main(String[] args) {
Jedis jedis = JedisPoolUtil.getJedis();
System.out.println(jedis);
}
}