Redis_框架整合1_SpringBoot

Spring+Redis步骤

(1)、引入pom依赖 

<dependency>

         <groupId> org.springframework.boot</groupId>

         <artifactId> spring-boot-starter-data-redis</artifactId>

</dependency>

(2)、引入RedisTemplate类,并创建RedisConfig配置类(@Configuration) ,设置redisConnectFactory,将RedisTemplate连接工具bean注入到Spring容器

(3)、引入封装RedisTemplate api的Redis工具类: RedisService/RedisUtils

(4)、引入Redis配置文件 application.properties

# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09

spring.redis.database=0

# Redis\u670D\u52A1\u5668\u5730\u5740

spring.redis.host=localhost

# Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3

spring.redis.port=6379

# Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09

spring.redis.password=

RedisTemplate api

1、opsForValue 操作String,Key,Value,包含过期key,setBit位操作等

2、opsForSet 操作set

3、opsForHash 操作hash

4、opsForZset 操作SortSet

5、opsForList 操作list队列

6、opsForHash 操作hash ​

7、opsForZset 操作SortSet ​ opsForList 操作list队列

RedisService

package com.xdclass.mobile.xdclassmobileredis;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.*;

import org.springframework.stereotype.Service;

import java.io.Serializable;

import java.util.List;

import java.util.Set;

import java.util.concurrent.TimeUnit;

/**

* Created by Administrator on 2018/10/6.

*/

@Service

public class RedisService {

@Autowired

    private RedisTemplateredisTemplate;

    private static double size = Math.pow(2, 32);

    /**

* 写入缓存

*

    * @param key

    * @param offset  位 8Bit=1Byte

    * @return

    */

    public boolean setBit(String key, long offset, boolean isShow) {

boolean result =false;

        try {

ValueOperations operations =redisTemplate.opsForValue();

            operations.setBit(key, offset, isShow);

            result =true;

        }catch (Exception e) {

e.printStackTrace();

        }

return result;

    }

/**

* 写入缓存

*

    * @param key

    * @param offset

    * @return

    */

    public boolean getBit(String key, long offset) {

boolean result =false;

        try {

ValueOperations operations =redisTemplate.opsForValue();

            result = operations.getBit(key, offset);

        }catch (Exception e) {

e.printStackTrace();

        }

return result;

    }

/**

* 写入缓存

*

    * @param key

    * @param value

    * @return

    */

    public boolean set(final String key, Object value) {

boolean result =false;

        try {

ValueOperations operations =redisTemplate.opsForValue();

            operations.set(key, value);

            result =true;

        }catch (Exception e) {

e.printStackTrace();

        }

return result;

    }

/**

* 写入缓存设置时效时间

*

    * @param key

    * @param value

    * @return

    */

    public boolean set(final String key, Object value, Long expireTime) {

boolean result =false;

        try {

ValueOperations operations =redisTemplate.opsForValue();

            operations.set(key, value);

            redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);

            result =true;

        }catch (Exception e) {

e.printStackTrace();

        }

return result;

    }

/**

* 批量删除对应的value

*

    * @param keys

    */

    public void remove(final String... keys) {

for (String key : keys) {

remove(key);

        }

}

/**

* 删除对应的value

*

    * @param key

    */

    public void remove(final String key) {

if (exists(key)) {

redisTemplate.delete(key);

        }

}

/**

* 判断缓存中是否有对应的value

*

    * @param key

    * @return

    */

    public boolean exists(final String key) {

return redisTemplate.hasKey(key);

    }

/**

* 读取缓存

*

    * @param key

    * @return

    */

    public Objectget(final String key) {

Object result =null;

        ValueOperations operations =redisTemplate.opsForValue();

        result = operations.get(key);

        return result;

    }

/**

* 哈希 添加

*

    * @param key

    * @param hashKey

    * @param value

    */

    public void hmSet(String key, Object hashKey, Object value) {

HashOperations hash =redisTemplate.opsForHash();

        hash.put(key, hashKey, value);

    }

/**

* 哈希获取数据

*

    * @param key

    * @param hashKey

    * @return

    */

    public ObjecthmGet(String key, Object hashKey) {

HashOperations hash =redisTemplate.opsForHash();

        return hash.get(key, hashKey);

    }

/**

* 列表添加

*

    * @param k

    * @param v

    */

    public void lPush(String k, Object v) {

ListOperations list =redisTemplate.opsForList();

        list.rightPush(k, v);

    }

/**

* 列表获取

*

    * @param k

    * @param l

    * @param l1

    * @return

    */

    public ListlRange(String k, long l, long l1) {

ListOperations list =redisTemplate.opsForList();

        return list.range(k, l, l1);

    }

/**

* 集合添加

*

    * @param key

    * @param value

    */

    public void add(String key, Object value) {

SetOperations set =redisTemplate.opsForSet();

        set.add(key, value);

    }

/**

* 集合获取

*

    * @param key

    * @return

    */

    public SetsetMembers(String key) {

SetOperations set =redisTemplate.opsForSet();

        return set.members(key);

    }

/**

* 有序集合添加

*

    * @param key

    * @param value

    * @param scoure

    */

    public void zAdd(String key, Object value, double scoure) {

ZSetOperations zset =redisTemplate.opsForZSet();

        zset.add(key, value, scoure);

    }

/**

* 有序集合获取

*

    * @param key

    * @param scoure

    * @param scoure1

    * @return

    */

    public SetrangeByScore(String key, double scoure, double scoure1) {

ZSetOperations zset =redisTemplate.opsForZSet();

        redisTemplate.opsForValue();

        return zset.rangeByScore(key, scoure, scoure1);

    }

//第一次加载的时候将数据加载到redis中

    public void saveDataToRedis(String name) {

double index = Math.abs(name.hashCode() %size);

        long indexLong =new Double(index).longValue();

        boolean availableUsers = setBit("availableUsers", indexLong, true);

    }

//第一次加载的时候将数据加载到redis中

    public boolean getDataToRedis(String name) {

double index = Math.abs(name.hashCode() %size);

        long indexLong =new Double(index).longValue();

        return getBit("availableUsers", indexLong);

    }

/**

* 有序集合获取排名

*

    * @param key 集合名称

    * @param value 值

*/

    public LongzRank(String key, Object value) {

ZSetOperations zset =redisTemplate.opsForZSet();

        return zset.rank(key,value);

    }

/**

* 有序集合获取排名

*

    * @param key

    */

    public Set>zRankWithScore(String key, long start,long end) {

ZSetOperations zset =redisTemplate.opsForZSet();

        Set> ret = zset.rangeWithScores(key,start,end);

        return ret;

    }

/**

* 有序集合添加

*

    * @param key

    * @param value

    */

    public DoublezSetScore(String key, Object value) {

ZSetOperations zset =redisTemplate.opsForZSet();

        return zset.score(key,value);

    }

/**

* 有序集合添加分数

*

    * @param key

    * @param value

    * @param scoure

    */

    public void incrementScore(String key, Object value, double scoure) {

ZSetOperations zset =redisTemplate.opsForZSet();

        zset.incrementScore(key, value, scoure);

    }

/**

* 有序集合获取排名

*

    * @param key

    */

    public Set>reverseZRankWithScore(String key, long start,long end) {

ZSetOperations zset =redisTemplate.opsForZSet();

        Set> ret = zset.reverseRangeByScoreWithScores(key,start,end);

        return ret;

    }

/**

* 有序集合获取排名

*

    * @param key

    */

    public Set>reverseZRankWithRank(String key, long start, long end) {

ZSetOperations zset =redisTemplate.opsForZSet();

        Set> ret = zset.reverseRangeWithScores(key, start, end);

        return ret;

    }

}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容