范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Springboot整合Redis和redis常用操作演示

  Springboot整合Redis
  springboot整合Redis相当的简单,只要引入redis相关的jar包,然后再做一些连接Redis的配置即可。引入redis相关jar包
  在pom.xml中添加如下代码,即可引入redis相关jar包:引入redis自身的jar包     org.springframework.boot     spring-boot-starter-data-redis  引入redis连接池的包     org.apache.commons     commons-pool2     2.11.1  springboot配置redis连接信息
  在springboot项目的application.properties中配置redis的连接信息,代码如下:spring.redis.lettuce.pool.max-active=20 spring.redis.lettuce.pool.max-idle=2 spring.redis.lettuce.pool.max-wait=10 spring.redis.lettuce.pool.min-idle=2 spring.redis.lettuce.shutdown-timeout=1   spring.redis.host=127.0.0.1 spring.redis.password=666 spring.redis.port=6379
  spring.redis.lettuce相关的配置,是关于redis连接池的配置。lettuce在springboot的较新版本中,替代了jedis成为了默认的连接池工具。关于性能、连接机制方面,和jedis其实有很多区别,这块后面单独写篇文章介绍。
  spring.redis相关的配置都是redis数据库的连接信息,密码如果没有,就删除掉spring.redis.password即可。通过springboot操作执行redis命令
  redis有很多命令,在springboot中,你可以通过直接@Autowired注入StringRedisTemplate或者RedisTemplate来使用。(下面代码中的stringRedisTemplate、redisTemplate对象就是通过@Autowired注入的,完整代码可以参考文末代码)
  下面案例代码中的key、value变量都是String类型,因为我们使用的是StringRedisTemplate。redis SETNX:stringRedisTemplate.opsForValue().setIfAbsent(key, value)redis GETSET:stringRedisTemplate.opsForValue().getAndSet(key, value)redis INCR:stringRedisTemplate.opsForValue().increment(key)redis INCRBY:stringRedisTemplate.opsForValue().increment(key,val)redis DECR:stringRedisTemplate.opsForValue().decrement(key)redis DECRBY:stringRedisTemplate.opsForValue().decrement(key, val)redis SADD:stringRedisTemplate.opsForSet().add(key, value)redis SISMEMBER:stringRedisTemplate.opsForSet().isMember(key, member)redis SMEMBERS:stringRedisTemplate.opsForSet().members(key)redis SCARD:stringRedisTemplate.opsForSet().size(key)redis SET:stringRedisTemplate.opsForValue().set(key, value)或stringRedisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS)该命令有很多可选参数,更复杂的应用可以参考文末代码。redis GET:stringRedisTemplate.opsForValue().get(key)redis EXISTS:stringRedisTemplate.hasKey(key)redis TTL:stringRedisTemplate.getExpire(key, TimeUnit.SECONDS)redis EXPIRE:stringRedisTemplate.expire(key, time, TimeUnit.SECONDS)redis DEL:stringRedisTemplate.delete(key)redis HSET:stringRedisTemplate.opsForHash().put(key, field, value)redis LPOP:redisTemplate.opsForList().leftPop(key)redis LPUSH:redisTemplate.opsForList().leftPush(key, val)redis LREM:redisTemplate.opsForList().remove(key, 0, val)
  还有很多,就不单独列出了,可参考文末的完整代码。封装常用的Redis操作
  作者把自己常用的一些redis操作封装了一个springboot的service,里面包含了大部分的redis数据结构的操作,仅供参考。如果你要参考,有需要可以联系作者(点击右侧"联系作者"按钮即可)。package com.coderbbb.blogv2.service;  import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.geo.Circle; import org.springframework.data.geo.Distance; import org.springframework.data.geo.GeoResults; import org.springframework.data.geo.Point; import org.springframework.data.redis.connection.RedisGeoCommands; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service;  import javax.annotation.Resource; import java.util.*; import java.util.concurrent.TimeUnit;  /**  * @author longge93 on 2018/6/16.  */ @Service public class RedisService {      @Autowired     private StringRedisTemplate stringRedisTemplate;     @Resource     private RedisTemplate redisTemplate;      /**      * 对应Redis SETNX      *      * @param key      * @param value      * @return      */     public Boolean setnx(String key, String value) {         return stringRedisTemplate.opsForValue().setIfAbsent(key, value);     }      /**      * 对应Redis GETSET      *      * @param key      * @param value      * @return      */     public String setGet(String key, String value) {         return stringRedisTemplate.opsForValue().getAndSet(key, value);     }      /**      * 对应Redis INCR      *      * @param key      * @return      */     public Long incr(String key) {         return stringRedisTemplate.opsForValue().increment(key);     }      /**      * 对应Redis INCRBY      *      * @param key      * @param val      * @return      */     public Long incr(String key, long val) {         return stringRedisTemplate.opsForValue().increment(key, val);     }      /**      * 对应Redis DECR      *      * @param key      * @return      */     public Long decr(String key) {         return stringRedisTemplate.opsForValue().decrement(key);     }      /**      * 对应Redis DECRBY      *      * @param key      * @param val      * @return      */     public Long decr(String key, long val) {         return stringRedisTemplate.opsForValue().decrement(key, val);     }      /**      * 对应Redis SMEMBERS      * @param key      * @return      */     public Set setList(String key) {         return stringRedisTemplate.opsForSet().members(key);     }      /**      * 对应Redis SCARD      * @param key      * @return      */     public Long setSize(String key) {         return stringRedisTemplate.opsForSet().size(key);     }      /**      * 对应Redis SET      * @param key      * @param value      */     public void putString(String key, String value) {         stringRedisTemplate.opsForValue().set(key, value);     }      /**      * 对应Redis SET      * s为单位。      * @param key      * @param value      * @param time      */     public void putString(String key, String value, long time) {         stringRedisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);     }      /**      * 对应Redis SET      * 详细命令:SET key value [EX seconds] [PX milliseconds] [NX|XX]      * @param key      * @param value      * @param time      * @return      */     public Boolean zPutString(String key, String value, long time) {         return stringRedisTemplate.opsForValue().setIfAbsent(key, value, time, TimeUnit.SECONDS);     }      /**      * 对应Redis SET      * @param key      * @param value      * @param time      * @param unit      */     public void putString(String key, String value, long time, TimeUnit unit) {         stringRedisTemplate.opsForValue().set(key, value, time, unit);     }      public String getString(String key) {         return stringRedisTemplate.opsForValue().get(key);     }      public void putObject(String key, Object value, long time, TimeUnit unit) {         redisTemplate.opsForValue().set(key, value, time, unit);     }      public Object getObject(String key) {         return redisTemplate.opsForValue().get(key);     }      /**      * 对应Redis EXISTS      * @param key      * @return      */     public Boolean exist(String key) {         return stringRedisTemplate.hasKey(key);     }      /**      * 对应Redis TTL      * key有效时间      *      * @param key      * @return      */     public Long expire(String key) {         return stringRedisTemplate.getExpire(key, TimeUnit.SECONDS);     }      /**      * 对应Redis DEL      * @param key      * @return      */     public Boolean del(String key) {         return stringRedisTemplate.delete(key);     }      /**      * 对应Redis HSET      * @param key      * @param field      * @param value      */     public void hset(String key, String field, String value) {         stringRedisTemplate.opsForHash().put(key, field, value);     }      /**      * 对应Redis HGET      * @param key      * @param field      * @return      */     public String hget(String key, String field) {         HashOperations ops = stringRedisTemplate.opsForHash();         return ops.get(key, field);     }      /**      * 对应Redis HMGET      * @param key      * @return      */     public Map hmget(String key) {         HashOperations ops = stringRedisTemplate.opsForHash();         return ops.entries(key);     }      /**      * 对应Redis HMSET      * @param key      * @param data      */     public void hmset(String key, HashMap data) {         HashOperations ops = stringRedisTemplate.opsForHash();         ops.putAll(key, data);     }      /**      * 对应Redis HDEL      * @param key      * @param field      */     public void hdel(String key, String field) {         HashOperations ops = stringRedisTemplate.opsForHash();         ops.delete(key, field);     }      /**      * 对应Redis SADD      * @param key      * @param value      */     public void sadd(String key, String value) {         stringRedisTemplate.opsForSet().add(key, value);     }      /**      * 对应Redis SISMEMBER      * @param key      * @param val      * @return      */     public Boolean setIsMember(String key, String val) {         return stringRedisTemplate.opsForSet().isMember(key, val);     }      public void channel(String channel, String value) {         stringRedisTemplate.convertAndSend(channel, value);     }       /**      * 对应Redis ZREM      * @param key      * @param member      * @return      */     public Long zSetDel(String key, String member) {         return stringRedisTemplate.boundZSetOps(key).remove(member);     }      public void geoAdd(String key, double lat, double lng, String member) {         Point point = new Point(lng, lat);         RedisGeoCommands.GeoLocation geoLocation = new RedisGeoCommands.GeoLocation<>(member, point);         stringRedisTemplate.boundGeoOps(key).add(geoLocation);     }      public GeoResults> geoSearch(String key, double lat, double lng, double distanceVal, long count) {         Point point = new Point(lng, lat);         Distance distance = new Distance(distanceVal);         Circle circle = new Circle(point, distance);         RedisGeoCommands.GeoRadiusCommandArgs commandArgs = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs();         commandArgs.sortAscending();         if (count != 0) {             commandArgs.limit(count);         }         return stringRedisTemplate.boundGeoOps(key).radius(circle, commandArgs);         //.geoRadius(circle);     }      /**      * 对应Redis EXPIRE      * @param key      * @param time      */     public void setExpire(String key, long time) {         stringRedisTemplate.expire(key, time, TimeUnit.SECONDS);     }      /**      * 对应Redis EXPIRE      * @param key      * @param time      */     public void setExpireMills(String key, long time) {         stringRedisTemplate.expire(key, time, TimeUnit.MILLISECONDS);     }      /**      * 对应Redis MGET      * @param keys      * @return      */     public List mget(List keys) {         return stringRedisTemplate.opsForValue().multiGet(keys);     }       /**      * 对应Redis LPUSH      * 设置key 类型为list      *      * @param key      * @param value      * @return      */     public Long listAddAll(String key, Collection<?> value) {         return redisTemplate.opsForList().leftPushAll(key, value.toArray());     }      /**      * 对应Redis LPOP      * 移出并获取列表的第一个元素      *      * @param key      * @return 删除的元素      */     public Object lLeftPop(String key) {         return redisTemplate.opsForList().leftPop(key);     }      /**      * 对应Redis LPUSH      * @param key      * @param val      * @return      */     public Long listAdd(String key, Integer val) {         return redisTemplate.opsForList().leftPush(key, val);     }      /**      * 对应Redis LREM      * @param key      * @param val      */     public void listRemove(String key, String val) {         redisTemplate.opsForList().remove(key, 0, val);     }      /**      * 对应Redis LPUSH      * @param key      * @param val      * @return      */     public Long listAddForString(String key, String val) {         return redisTemplate.opsForList().leftPush(key, val);     }      /**      * 对应Redis LRANGE      * @param key      * @return      */     public List listGetAll(String key) {         return redisTemplate.opsForList().range(key, 0, -1);     }      /**      * 对应Redis LLEN      * @param key      * @return      */     public Long listSize(String key) {         return redisTemplate.opsForList().size(key);     } }
  版权声明:《Springboot整合Redis和redis常用操作演示》为CoderBBB作者「ʘᴗʘ」的原创文章,转载请附上原文出处链接及本声明。
  原文链接:https://www.coderbbb.com/articles/20
  更优排版,请访问原文,「链接」
比尔黄事件给谁敲响了警钟?2021年3月26日,Archegos资本管理公司因为拖欠多家投资银行的保证金,其投资的多个股票被迫平仓,所涉股票价值达数十亿美元,引发相应股票价格大幅下跌。高盛摩根士丹利瑞士信贷强化监管金融机构人工智能的运用,美国监管者在行动3月29日,美国联邦层级的五家金融监管机构联合发文,就金融机构运用人工智能(包括机器学习)的现状向社会大众征集信息和相关意见建议。美联储官网上的新闻发布稿五家监管机构联合签署并发表应该重启铂金等贵金属交易本文发表于3月初本人的新浪微博,重贴于此,寄望于监管层能够听到个人投资者微弱的心声2020年的下半年以后,国内各大商业银行陆续关闭了铂金钯金等贵金属的网上交易。关闭这类贵金属的交易游戏江湖的刀光剑影本文发表于本人的新浪微博,是对今日头条的东家进入游戏市场这一举措的一个评论腾讯一直以来都是国内网络游戏市场无可争辩的霸主,但是,当抖音的东家字节跳动开始染指网络游戏市场的时候,腾讯聊聊摄影系列川岛小鸟镜头下的斋藤飞鸟斋藤飞鸟上期分享了川岛小鸟系列的佐佐木彩夏,这期我给大家分享川岛小鸟镜头下的斋藤飞鸟。斋藤飞鸟(),1998年8月10日出生于日本东京都,日缅混血,是一名女歌手演员模特。出演过日版聊聊摄影系列森山大道森山大道,这个摄影大家,我是不敢妄加评论的,我只是分享下我对于他照片的看法,希望对你们有帮助。森山大道,1938年出生于大阪,日本摄影师,与石内都荒木经惟等人同时崛起于20世纪60德国政坛会不会又迎来一位女总理?今年,德国总理默克尔任期届满,将结束其长达16年的总理生涯。德国政坛的后默克尔时代将迎来一位怎样的新总理?昨天,德国绿党提名其年仅40岁的联合主席安娜莱娜贝尔伯克(Annalena那些身后将会捐得干净的名人1丹尼尔克雷格(DANIELCRAIG)丹尼尔克雷格这位演詹姆斯邦德007的第六任演员认为,将财富留给子孙,给他们带来的危害远大于好处。因此他身后会将所有的财富(约1。45亿美元)摇号新政来袭二手车交易激增车主只求尽快出手一位二手车商表示,为了腾空指标,车主都着急卖车,价格基本上是我说了算,肯定比平时低不少拿到更新的指标后,便会赶往4S店给自己预定的新车上牌照。一位车主坦言,我只求尽快出手,损失这几船上出现病例肯尼亚拒绝推迟禁令3万辆二手车或被拒入境THESTAR网站消息,根据肯尼亚8年以上二手车进口禁令,从2021年1月1日起,仅允许2014年制造的车辆进入该国。由于疫情影响导致船只短缺,汽车进口商已要求将禁令延期至2021小夫妻爆改二手车花5万变房车环游25国据英国太阳报11月12日报道,英国一对夫妇把二手小货车改造成了舒适房车,目前已经周游25个国家,每天仅花费20英镑(约合人民币180元)。26岁的本富尔赖(BenFuery)和24
雷军证明了自己!小米成功押宝高端市场,份额与苹果只相差1。9在去年11月份的时候,雷军在亚布力论坛上回应外界对小米的错误解读,他回应称大家还认为小米做的是中低端,这点让我很郁闷,我不知道大家认为的高端是什么样的,卖得贵吗?雷军想向市场证明小一加9Pro跟小米11Pro拼降价,三星S21成炮灰?因为李开新成了一加手机的销售副总裁,所以今年一加9系列降价来得非常快,应该是一加这么多年价格跳水最快幅度最大的一次,关键是这手机也没上市多久,是不是让买首发的用户不太舒服啊?不过一气质女神卢杉走进新华互联网科技推荐好学校好专业5月28日,新华杯明星店主创业扶持计划启动仪式在新华互联网科技精彩举行。青年实力派演员卢杉作为新华互联网电商专业推荐官走进新华,她用直播的形式与众多网友分享新华校园,并参与创业学子Note10系列明日首销,看看现在的千元机,究竟是否能够独当一面相信屏幕前的不少朋友应该都有感觉,最近这段时间以来,国内的手机市场相比以往,那是真的冷清了很多。想想年后的那几个月,国内的手机市场那真可谓如火如荼,每个月的新机更是数不胜数。但时间新机已在路上,报告称iPhone13系列的高刷屏幕已开始生产来源环球网据外媒6月1日报道,三星一直是iPhone显示屏的主要供应商。在过去的时间里,这家韩国科技巨头凭借其在显示屏领域的领先技术,再次获得了约8000万台iPhone显示屏的订多家正主出手整治支付机构外包殇作为支付机构连接线下商业的重要渠道,数量庞大的服务商承担着落地执行的重任。但同样由于分散下沉等特点,外包商管理成为一大难题。针对外包商乱象,近一周以来,乐刷支付宝等多家持牌支付机构虚拟货币挖矿遭围堵本报记者靖雯近日,国务院金融稳定发展委员会召开第五十一次会议,研究部署下一阶段金融领域重点工作。会议要求进一步服务好实体经济,坚决防控金融风险,继续深化改革开放。其中,强化平台企业后来居上!鸿蒙和安卓的距离,不仅是一个手机操作系统鸿蒙,这个饱受争议和期待的第一款国产分布式操作系统,终于在6月2日要正式面世了,到时,会有数十款华为手机和荣耀手机更新到鸿蒙系统。从网友上传的试用视频来看,鸿蒙系统不仅使用流畅,而6。18手机购买推荐指南(20002999元篇)6。18手机推荐,小编已经给大家推荐了一千以下以及一千至两千的档位推荐。感兴趣的小伙伴可以翻翻我近几日发布的文章。感谢大家的喜欢,也有伙伴留言希望有更多档位的推荐,今天两千至三千档iPhone12ProMax核心组件成本曝光iPhone12ProMax去年10月上市的,上市不久国外知名拆解机构iFixit就完成了对此款手机的拆解分析。不过关于核心器件成本分析一直没有给出。直到最近TechInsight传闻苹果会在今年推出重新设计的AirPods,但第二代AirPodsPro还要等到明年自AirPods在2016年推出后,经过5年时间的发展,无线蓝牙耳机已经是非常常见的手机配件了,各家都争先恐后推出了大量从低到高定价的无线耳机,不过苹果反而放缓了脚步,除了去年面向