Redis基礎學習001

一、 Redis概念

    redis是一款高性能的非關係型數據庫。

    redis數據類型

            字符串類型: String,哈希類型:hash,列表類型:list,集合類型:set,有序集合類型:sorted set

二、 應用場景:

             緩存,聊天室在線好友,任務隊列(秒殺),應用排行榜,分佈式架構中session分離

三、redis解壓即可使用,以及文件說明:

         redis.windows.conf:配置文件

         redis-cli.exe:  redis的客戶端

         redis-server.exe:redis的服務端

四、redis的使用方式

                        redis的數據結構: rdis存儲的是key,value 格式的數據,其中key都是字符串,value有五種數據格式

                          value的數據結構:

                                字符串類型: String,

                                 哈希類型:hash,map形式的存儲方式

                                 列表類型:list,  linkedlist格式

                                 集合類型:set, hashset格式

                                 有序集合類型:sorted set

       4.1、 使用命令操作redis:

                         字符串類型: value 不能重複

                         存儲:  set key value

                         獲取:  get key

                         刪除:  del key

                          hash類型:

                         存儲:  hset  key(集合名)  field value  例如:  hset  myhash   username(key)  liuliu(value)

                         獲取:  hset  key(集合名)  field value 例如:  hget  myhash   username

                         刪除:  hdel key(集合名)   field

                       獲取hash中的所有數據: hgetall

                         列表類型(list):

                        可以添加數據到列表的左邊或者右邊。

                         存儲:  lpush key value 從列表的左邊添加,rpush key value 從列表的右邊添加,

                         獲取: lrange key start end  從列表中 start 到 end 的數據

                         刪除: lpop key 刪除列表最左邊的一個元素,並將元素返回

                         刪除: rpop key 刪除列表最右邊的一個元素,並將元素返回

                         集合類型(set,不允許重複):

                         存儲: sadd key value

                         獲取: smember key  獲取set集合中所有元素

                         刪除:srem key value

                        有序集合類型(sorted set):

                           sorted set 會根據 score  的大小進行排序

                         存儲: zadd key score  value 例如 : zadd mysorted(集合名)   26(序號) liuliu

                         獲取: zrange  key start end  從列表中 start 到 end 的數據

                         刪除:zrem key value

                    獲取列表中score(序列的值): zrange  key start end withscore  例如:  zrange  mysorted 0  -   -1(負一)  withscore

     4.2、 使用java代碼操作redis:

 

 

     4.3、 通用命令:

                   keys * :      查詢redis中的所有鍵

                   type key:   查詢鍵的類型

                   del key:刪除指定的key

五、redis的持久化:

                  可以將redis中的數據持久化保存到硬盤中。

        5.1、redis持久化機制:

                        RDB:  默認方式,在一定的時間間隔檢測key的變化情況,然後持久化數據

                        AOF:  以日誌的方式記錄每一條數據持久化到文件中。

            RDB使用方法:

                           找到解壓後的redis配置文件 redis.windows.conf,編輯配置文件,找到一下代碼

                               save 900 1          十五分鐘之後,有一個key改變,就會持久化一次
                               save 300 10        五分鐘之後,有大於10個key改變,就會持久化一次
                               save 60 10000    60秒之後,有10000個key改變,就會持久化一次

                             修改配置後文件,需要在cmd 命令行進入到redis解壓目錄進行啓動redis的服務端和客戶端,

redis-service.exe redis.windows.conf

                         數據會存儲到redis解壓目錄的一個dump.rdb文件中。

            

               AOF使用方法:

                           找到解壓後的redis配置文件 redis.windows.conf,編輯配置文件,找到一下代碼

                            appendonly no 修改爲 appendonly yes 表示開啓AOF,然後找到下面的代碼,選擇持久化方式

                            # appendfsync always         每一次操作都進行持久化
                               appendfsync everysec (默認開啓)  每隔一秒進行一次持久化
                            # appendfsync no                不進行持久化

                         修改完畢後,操作方式如RDB一致。數據會被持久化到redis解壓文件下的 appendonly.aof文件中

六、Java客戶端 Jedis:

                  一款java操作redis數據庫的工具。               

                  jedis操作redis的數據類型,jedis中的方法和redis命令一樣。

                 但有個特別的設置字符串方法,就是指定所存儲的字符串數據過期時間:setex("鍵的名稱","失效時間",''存儲的數據');

                                

七、Jedis的連接池:

              7.1 Jedisd自帶的連接池 JedisPoll

                    使用:JedisPoll jedisPoll = new JedisPoll (可以傳一個連接池配置對象,主機名,端口號)

                        創建JedisPoll連接池對象,調用getResource()方法獲取Jedis的連接,調用redis存儲數據的方法。

                     連接池配置對象(JedisPollConfig  ):

                              JedisPollConfig  jedisPollConfig  = new JedisPollConfig  ();                   

                                    edisPollConfig.setMaxTotal(最大連接數);

                                    edisPollConfig.setMaxIdle(最大的空閒連接);

               7.2  連接池的工具類:

                          創建一個 JedisPollUtil工具類。

                           工具類中加載JedisPollConfig  的配置文件 Jedis.properties

package cn.itcast.jedis.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 JedisPool工具類
    加載配置文件,配置連接池的參數
    提供獲取連接的方法

 */
public class JedisPoolUtils {

    private static JedisPool jedisPool;

    static{
        //讀取配置文件
        InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
        //創建Properties對象
        Properties pro = new Properties();
        //關聯文件
        try {
            pro.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //獲取數據,設置到JedisPoolConfig中
        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("port")));



    }


    /**
     * 獲取連接方法
     */
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章