天天看點

Redis和Jedis

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);
    }
}
           

繼續閱讀