SpringDataRedis

配置文件

Maven配置

<!-- 緩存 Redis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.0</version>
        </dependency>

        <!--spring-data-redis-->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.8.8.RELEASE</version>
        </dependency>

redis-config.properties

jedisConnectionFactory.hostName=192.168.3.33
jedisConnectionFactory.port=6379 
jedisConnectionFactory.password=
jedisConnectionFactory.database=0 
poolConfig.maxIdle=300 

spring-redis.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        ">

    <!--加載解析配置文件雨席,可以直接給對應的Bean注入值,注入方式為屬性注入,調用set方法注入-->
    <context:property-override location="classpath:config/redis-config.properties" />

    <!--Jedis連接池配置-->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"></bean>

    <!--Jedis連接工廠對象-->
    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          p:pool-config-ref="poolConfig"/>

    <!--Jedis對緩存操作的模板對象-->
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <!--配置數(shù)據(jù)源-->
        <property name="connectionFactory" ref="jedisConnectionFactory" />
    </bean>
</beans>

不同數(shù)據(jù)類型操作

ValueOperations:簡單K-V操作

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-redis.xml")
public class ValueTest {

    @Autowired
    private RedisTemplate redisTemplate;
    /***
     * 增加數(shù)據(jù)測試
     */
    @Test
    public void testAdd(){
        //boundValueOps用于操作簡單的key:value類型
        redisTemplate.boundValueOps("username").set("小紅紅");
    }

    /***
     * 查詢操作
     */
    @Test
    public void testGet(){
        Object username = redisTemplate.boundValueOps("username").get();
        System.out.println(username);
    }

    /***
     * 刪除測試
     */
    @Test
    public void testDelete(){
        //redisTemplate.boundValueOps("username")
        redisTemplate.delete("username");
    }

}

SetOperations:set類型數(shù)據(jù)操作

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-redis.xml")
public class SetTest {

    @Autowired
    private RedisTemplate redisTemplate;

    /***
     * 增加數(shù)據(jù)測試
     */
    @Test
    public void testAdd(){
        redisTemplate.boundSetOps("username").add("小紅");
        redisTemplate.boundSetOps("username").add("小黑");
        redisTemplate.boundSetOps("username").add("小紅");//重復過濾
        redisTemplate.boundSetOps("username").add("小紅");//重復過濾
    }

    /***
     * 查詢操作
     */
    @Test
    public void testGet(){
        Set members = redisTemplate.boundSetOps("username").members();
        System.out.println(members);
    }

    /***
     * 刪除測試
     */
    @Test
    public void testDelete(){
        redisTemplate.boundSetOps("username").remove("小黑");
    }

}

ListOperations:list操作

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-redis.xml")
public class ListTest {

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 左壓棧
     * 從隊列的左邊開始增加數(shù)據(jù)
     */
    @Test
    public void testLeftAdd(){
        //只添加1條數(shù)據(jù)
        redisTemplate.boundListOps("Xiaohong").leftPush("花花");
        //批量添加
        redisTemplate.boundListOps("Xiaohong").leftPushAll("小紅紅","小花花","哈哈哈");
    }

    /***
     * 左壓出棧
     */
    @Test
    public void testLeftGet(){
        Object result = redisTemplate.boundListOps("Xiaohong").leftPop();
        System.out.println(result);
    }

    /**
     * 右壓棧
     */
    @Test
    public void testRightAdd(){
        //只添加1條數(shù)據(jù)
        redisTemplate.boundListOps("Xiaohong").rightPush("花花");
        //批量添加
        redisTemplate.boundListOps("Xiaohong").rightPushAll("小紅紅","小花花","哈哈哈");
    }

    /***
     * 左壓出棧
     */
    @Test
    public void testRightGet(){
        Object result = redisTemplate.boundListOps("Xiaohong").rightPop();
        System.out.println(result);
    }

}

hashoperations:hash操作

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-redis.xml")
public class HashTest {

    @Autowired
    private RedisTemplate redisTemplate;

    /***
     * 右2層key
     *     namespace
     *              key
     */
    @Test
   public void testAdd(){
        redisTemplate.boundHashOps("NameSpace").put("1","小花花");
        redisTemplate.boundHashOps("NameSpace").put("2","大花花");
        redisTemplate.boundHashOps("NameSpace").put("3","中花花");

        redisTemplate.boundHashOps("XiaohongHAHA").put("1","中花花");
        redisTemplate.boundHashOps("XiaohongHAHA").put("2","中花花");
   }


    /***
     * 查詢操作
     */
    @Test
   public void testGet(){
        Object result1 = redisTemplate.boundHashOps("NameSpace").get("1");
        System.out.println(result1);

        Object result2 = redisTemplate.boundHashOps("XiaohongHAHA").get("1");
        System.out.println(result2);
    }


    /***
     * 刪除操作
     */
    @Test
    public void testDelete(){
        redisTemplate.boundHashOps("NameSpace").delete("2");
    }

    /***
     * 查詢所有
     */
    @Test
    public void testGetAll(){
        List nameSpace = redisTemplate.boundHashOps("NameSpace").values();

        for (Object o : nameSpace) {
            System.out.println(o);
        }
    }

}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肯夏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌熄捍,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轨域,死亡現(xiàn)場離奇詭異,居然都是意外死亡干发,警方通過查閱死者的電腦和手機冀续,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來顺献,“玉大人,你說我怎么就攤上這事薪伏。” “怎么了萝招?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵槐沼,是天一觀的道長肖油。 經常有香客問我,道長县袱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任暴拄,我火速辦了婚禮,結果婚禮上那伐,老公的妹妹穿的比我還像新娘畅形。我一直安慰自己诉探,他們只是感情好日熬,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肾胯,像睡著了一般竖席。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敬肚,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天毕荐,我揣著相機與錄音,去河邊找鬼艳馒。 笑死憎亚,一個胖子當著我的面吹牛,可吹牛的內容都是我干的弄慰。 我是一名探鬼主播第美,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼陆爽!你這毒婦竟也來了什往?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤墓陈,失蹤者是張志新(化名)和其女友劉穎恶守,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贡必,經...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡兔港,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了仔拟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衫樊。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖利花,靈堂內的尸體忽然破棺而出科侈,到底是詐尸還是另有隱情,我是刑警寧澤炒事,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布臀栈,位于F島的核電站,受9級特大地震影響挠乳,放射性物質發(fā)生泄漏权薯。R本人自食惡果不足惜姑躲,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盟蚣。 院中可真熱鬧黍析,春花似錦、人聲如沸屎开。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奄抽。三九已至蔼两,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間如孝,已是汗流浹背宪哩。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留第晰,地道東北人锁孟。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像茁瘦,于是被迫代替她去往敵國和親品抽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348