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

redis实战之基础,程序简单操作redis

  redis程序客户端操作javajedismaven依赖       redis.clients      jedis      3.6.3 简单操作
  第一个超简单的程序 public class RedisOpt {     public static void main(String[] args) {         Jedis jedis = new Jedis("127.0.0.1", 6379);         jedis.connect();          // -- 字符串操作 ----         System.out.println("-- 字符串操作 ----");         jedis.set("count", "1");         // 自增         jedis.incr("count");         System.out.println(jedis.get("count"));         // setnx 命令         if(jedis.setnx("count","100") > 0){             System.out.println("setnx:count >>> " + jedis.get("count"));         } else {             System.out.println("key:count >>> redis中已经存在");         }          //  ---- hash ----         System.out.println("-- hash操作 ----");         jedis.hset("user", "name", "非鸽传书");         jedis.hset("user", "wish", "每天进步一点点");         jedis.hset("user", "maxim", "坚持是一种品格");         jedis.hset("user", "age", "18");         //输出结果 : {f1=v1, f2=v2}         System.out.println(jedis.hgetAll("user"));         jedis.hincrBy("user", "age", 2);         // jedis.hsetnx(...) 和字符串的setnx命令类似,         System.out.println("after incr >>> " + jedis.hgetAll("user"));          // ---- set -----         System.out.println("-- set操作 ----");         jedis.sadd("mafei", "出城剿匪");         jedis.sadd("mafei", "公平");         jedis.sadd("mafei", "公平");         jedis.sadd("mafei", "还是公平");         System.out.println(jedis.smembers("mafei"));          jedis.sadd("shiye", "出城剿匪");         jedis.sadd("shiye", "吃着火锅");         jedis.sadd("shiye", "唱着歌");         jedis.sadd("shiye", "忽然被马匪给劫~了");         System.out.println(jedis.smembers("shiye"));          System.out.println("交集 >>> " + jedis.sinter("mafei","shiye"));         System.out.println("差集 >>> " + jedis.sdiff("mafei","shiye"));         System.out.println("并集 >>> " + jedis.sunion("mafei","shiye"));          // ---- zset -----         System.out.println("-- zset操作 ----");         jedis.zadd("meals", 5, "breakfast");         jedis.zadd("meals", 20, "lunch");         jedis.zadd("meals", 18, "supper");          // 正序         System.out.println(jedis.zrangeWithScores("meals", 0, -1));         // 倒序         System.out.println(jedis.zrevrangeWithScores("meals", 0, -1));  // ---- list ----         System.out.println("-- list操作 ----");         jedis.del("reqList");         jedis.rpush("reqList", "再次暗示:");         jedis.rpush("reqList", "点赞、");         jedis.rpush("reqList", "关注");          jedis.del("please");         jedis.rpush("please", "连续暗示:");         jedis.rpush("please", "收藏、");         jedis.rpush("please", "评论");          List reqList = jedis.lrange("reqList", 0, -1);         reqList.forEach(s -> System.out.print(s));         System.out.println();         List please = jedis.lrange("please", 0, -1);         please.forEach(s -> System.out.print(s));          jedis.close();     } } // 输出结果 -- 字符串操作 ---- 2 key:count >>> redis中已经存在 -- hash操作 ---- {name=非鸽传书, wish=每天进步一点点, maxim=坚持是一种品格, age=18} after incr >>> {name=非鸽传书, wish=每天进步一点点, maxim=坚持是一种品格, age=20} -- set操作 ---- [吃着火锅, 出城剿匪, 忽然被马匪给劫~了, 还是公平, 公平, 唱着歌] [吃着火锅, 出城剿匪, 忽然被马匪给劫~了, 唱着歌] 交集 >>> [吃着火锅, 出城剿匪, 忽然被马匪给劫~了, 唱着歌] 差集 >>> [公平, 还是公平] 并集 >>> [吃着火锅, 出城剿匪, 忽然被马匪给劫~了, 还是公平, 公平, 唱着歌] -- zset操作 ---- [[breakfast,5.0], [supper,18.0], [lunch,20.0]] [[lunch,20.0], [supper,18.0], [breakfast,5.0]] -- list操作 ---- 再次暗示:点赞、关注 连续暗示:收藏、评论
  jedis连接池
  redis其实也是数据库,仅使用jedis来处理的话需要频繁的创建和关闭链接,因此可以采用jedis连接池来创建链接。 public class RedisJedisPool {     public static void main(String[] args) {         // 连接池配置对象,包含了很多默认配置         GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();         JedisPool jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379);         Jedis jedis = null;         try {             // 从连接池获取jedis对象             jedis = jedisPool.getResource();             // 执行操作             System.out.println(jedis.smembers("shiye"));         } catch (Exception e) {             System.out.println(e.getMessage());         } finally{             // 如果使用JedisPool,那么close操作不是关闭连接,代表归还连接池             if(jedis != null){                 jedis.close();             }         }     } }  // 输出结果: [吃着火锅, 出城剿匪, 唱着歌, 忽然被马匪给劫~了]Spring Boot 集成 Redis
  只是简单的集成,具体使用需要优化的地方很多。
  maven      org.springframework.boot     spring-boot-starter-data-redis     2.5.4 
  配置文件(.property, yml自行转换) ## redis spring.redis.host=127.0.0.1 #Redis服务器连接端口 spring.redis.port=6379 #Redis服务器连接密码(默认为空) spring.redis.password= #连接池最大连接数(使用负值表示没有限制) spring.redis.pool.max-active=8 #连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.pool.max-wait=-1 #连接池中的最大空闲连接 spring.redis.pool.max-idle=8 #连接池中的最小空闲连接 spring.redis.pool.min-idle=0 #连接超时时间(毫秒) spring.redis.timeout=30000
  配置类 @Configuration public class RedisCfg {      @Value("${spring.redis.host}")     private String host;     @Value("${spring.redis.port}")     private int port;     @Value("${spring.redis.timeout}")     private int timeout;     @Value("${spring.redis.password}")     private String password;     @Value("${spring.redis.pool.max-active}")     private int maxActive;     @Value("${spring.redis.pool.max-wait}")     private int maxWait;     @Value("${spring.redis.pool.max-idle}")     private int maxIdle;     @Value("${spring.redis.pool.min-idle}")     private int minIdle;      @Bean     public JedisConnectionFactory redisConnectionFactory() {         JedisConnectionFactory factory = new JedisConnectionFactory();         factory.setHostName(host);         factory.setPort(port);         factory.setTimeout(timeout); //设置连接超时时间         factory.setPassword(password);         factory.getPoolConfig().setMaxIdle(maxIdle);         factory.getPoolConfig().setMinIdle(minIdle);         factory.getPoolConfig().setMaxTotal(maxActive);         factory.getPoolConfig().setMaxWaitMillis(maxWait);         return factory;     }      @Bean     public RedisTemplate redisTemplate(RedisConnectionFactory factory) {         StringRedisTemplate template = new StringRedisTemplate(factory);         //设置序列化工具,这样ReportBean不需要实现Serializable接口         setSerializer(template);         template.afterPropertiesSet();         return template;     }      private void setSerializer(StringRedisTemplate template) {         Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);         ObjectMapper om = new ObjectMapper();         om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);         om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);         jackson2JsonRedisSerializer.setObjectMapper(om);         template.setValueSerializer(jackson2JsonRedisSerializer);     } }
  工具类 @Component public class RedisUtils {      @Autowired     private RedisTemplate redisTemplate;      /**      * 写入缓存      * @param key      * @param value      * @return      */     public boolean set(final String key, Object value) {         boolean result = false;         try {             redisTemplate.opsForValue().set(key, value);             result = true;         } catch (Exception e) {             System.out.println("ex" + e);         }         return result;     }     /**      * 写入缓存设置时效时间      * @param key      * @param value      * @return      */     public boolean set(final String key, Object value, Long expireTime , TimeUnit timeUnit) {         boolean result = false;         try {             redisTemplate.opsForValue().set(key, value);             redisTemplate.expire(key, expireTime, timeUnit);             result = true;         } catch (Exception e) {             System.out.println("ex" + e);         }         return result;     }     /**      * 批量删除对应的value      * @param keys      */     public void remove(final String... keys) {         for (String key : keys) {             remove(key);         }     }     /**      * 批量删除key      * @param pattern      */     public void removePattern(final String pattern) {         Set keys = redisTemplate.keys(pattern);         if (keys.size() > 0){             redisTemplate.delete(keys);         }     }     /**      * 删除对应的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 Object get(final String key) {         Object result = null;         result = redisTemplate.opsForValue().get(key);         return result;     }     /**      * 哈希 添加      * @param key      * @param hashKey      * @param value      */     public void hmSet(String key, Object hashKey, Object value){         redisTemplate.opsForHash().put(key,hashKey,value);     }     /**      * 哈希获取数据      * @param key      * @param hashKey      * @return      */     public Object hmGet(String key, Object hashKey){         return redisTemplate.opsForHash().get(key,hashKey);     }     /**      * 列表添加      * @param k      * @param v      */     public void lPush(String k,Object v){         redisTemplate.opsForList().rightPush(k,v);     }     /**      * 列表获取      * @param k      * @param l      * @param l1      * @return      */     public List lRange(String k, long l, long l1){         return redisTemplate.opsForList().range(k,l,l1);     }     /**      * 集合添加      * @param key      * @param value      */     public void add(String key,Object value){         redisTemplate.opsForSet().add(key,value);     }     /**      * 集合获取      * @param key      * @return      */     public Set setMembers(String key){         return redisTemplate.opsForSet().members(key);     }     /**      * 有序集合添加      * @param key      * @param value      * @param scoure      */     public void zAdd(String key,Object value,double scoure){         redisTemplate.opsForZSet().add(key,value,scoure);     }     /**      * 有序集合获取      * @param key      * @param scoure      * @param scoure1      * @return      */     public Set rangeByScore(String key, double scoure, double scoure1){         return redisTemplate.opsForZSet().rangeByScore(key, scoure, scoure1);     }  }
  测试类 @RestController public class RedisTestController {      @Autowired     private RedisUtils redisUtils;      @GetMapping("/test/redis/getRedisCache/{key}")     public String getRedisCache(@PathVariable(value = "key")String key){         return redisUtils.get(key).toString();     }  }
  启动 spring boot 访问 localhost:8080/test/redis/getRedisCache/count结果如下:
  python操作redis
  版本:3.8
  首先需要引入redis包 pip install redisimport redis  # host是redis主机,需要redis服务端和客户端都启动 redis默认端口是6379 r = redis.Redis(host="localhost", port=6379, decode_responses=True) r.smembers("shiye") print(r.smembers("shiye"))  print("----- pool -------")  # redis 连接池 pool = redis.ConnectionPool(host="localhost", port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) list = r.lrange("reqList", 0, -1) print(list)  # 输出 {"吃着火锅", "忽然被马匪给劫~了", "出城剿匪", "唱着歌"} ----- pool ------- ["再次暗示:", "点赞、", "关注"]
  封面图,侵权删(各位老爷,看在图的份上给个三连吧)
环球焦点人物马斯克,被争议包围的世界首富来源环球时报环球时报驻美国特约记者英辰环球时报特约记者任重埃隆马斯克正在以他的故事表明,作为最新的世界首富,他对人类及宇宙未来的影响力,可能很大程度上已经超越了石油大亨洛克菲勒投资蒋凡卸任淘宝天猫法人及董事长当前已无法定代表人职务中华网财经4月2日讯,天眼查App显示,近日,蒋凡不再担任浙江淘宝网络有限公司浙江天猫网络有限公司阿里巴巴迅犀(杭州)数字科技有限公司法定代表人及董事长。天眼查显示,蒋凡当前已无法iOS15。4。1发布建议所有用户升级,我建议别冲动在iOS15。4正式版发布后,我第一时间进行了升级,本来是冲着戴口罩解锁功能去的,没想到却牺牲了内存和续航。在升级了iOS15。4正式版后,内存莫名其妙的少了7个G,且耗电快得吓人蒋凡卸任淘宝法定代表人及董事长近日,蒋凡不再担任浙江淘宝网络有限公司浙江天猫网络有限公司阿里巴巴迅犀(杭州)数字科技有限公司法定代表人及董事长。蒋凡当前已无法定代表人职务,关联企业共7家,其中3家已注销,在居然2个新套路要留意,3亿用户被骗的团团转,人民日报紧急喊停5G时代下的大潮流近些年来,随着我国基础设施建设与卫星设备的完善,移动通讯和互联网技术有了显著的提高,其中,我国较其他国家更先进的5G技术便是一例。5G时代的到来,给移动通讯市场带国家信息中心副主任徐长明电动车和燃油车是竞争关系,而非替代关系21世纪经济报道记者宋豆豆报道新能源汽车将迎来快速的发展,不过目前电动车并未完全覆盖燃油车的基础特性,如果技术上没有特别大的革命突破,电动车无法对油车形成全面快速替代。相当长时间内淘宝更新隐私政策鞭牛士4月2日消息,今日,淘宝发布淘宝网隐私政策更新公示通知,本次修订的内容主要包括优化第二章节(一)帮助您成为我们的会员及账户管理部分表述,更明确地披露了身份验证场景下的信息收集淘宝更新MCN机构管理规范鞭牛士4月2日消息,淘宝拟调整MCN机构管理规范,于4月8日正式生效。具体来看,在准入要求新增机构为一般纳税人,因不符合业务考核要求被清退的,180天内不允许再准入。此外,MCN机美国空军为什么要退役33架F22隐形战斗机?谢邀,的确是有这件事。戴维斯蒙森空军基地又要喜提旧飞机了。根据报道,美军计划淘汰33架F22战斗机,以腾出资金用于新的战机设计工作。五角大楼预计将把退役的战机送往亚利桑那州的戴维斯马云妻子年轻时长这样,看上去气质满满,没有她就没有现在的阿里要说中国互联网大头企业,无一例外人们一定会先想到两马马云马化腾。一个创立了阿里巴巴,改变了中国的购物方式。一个创立了腾讯,改变了中国的社交方式。马云和马化腾都是互联网的大佬,两人创2022年3月侵权举报受理公示为进一步落实企业主体责任,充分发挥用户举报对于网络侵权内容管理的重要补充作用,依据今日头条用户协议今日头条社区规范中涉及侵权内容的管理条款,今日头条受理用户侵权投诉举报,切实维护广
华为Nova9确认支持5G!曲面挖孔屏120W快充,预计9月16日发布说起华为Nova9系列,想必大家目前最关心的就是支不支持5G吧,随着该机现身工信部入网,更多规格信息也被揭开面纱。就在今天,有消息人士披露,华为Nova9系列预计将于9月16日正式高科技芯片14nm芯片跟7nm差距多大?如果用回14nm芯片,对我们有多大影响?笨鸟科技08月07日优质科技领域创作者从去年下半年开始,老美对华为的封锁,就唤起了国内对芯片产业的重视,尤其是AutoX发布全球首个城中村晚高峰完全无人驾驶视频太平洋汽车网技术频道近日,AutoX安途无人驾驶解决方案供应商公开了最新夜间全无人驾驶视频,最神奇的地方在于这次,他们在城中村做的无人驾驶测试。测试车基于FCA克莱斯勒大捷龙,搭载新能源汽车的国运之战!中国电能PK日本氢能,谁才是最后的王者?新能源汽车车载电池之争,一场关乎国运的争夺战,对于中国来说,到底有多重要?可以这样说不能输更输不起!然而,面对新能源汽车的选择上,中国和日本却走向了相反的道路。一个选择了电能,另一谁的表现更出色?华为智慧屏V75Supe与索尼77A80J随着智慧生活潮流的兴起,一众传统家电即将迎来升级换代。作为人们日常生活中最常使用的家电之一电视,曾经为我们能带来多少快乐,如今电视也将迎来全新的智能升级。历年来,各大电视商家的竞争电脑能不能在真空环境下运行?这个问题很有意思!先给出答案一般的普通电脑是无法在真空中长时间运行的,但特殊的电脑是可以的。电脑能在真空中运行吗?我们知道电脑本身的原理是其实就是许多电子元件组成的机器!所以在原理智能扫地机器人睿米EVEPLus,解放双手,让你从清洁烦恼中脱身现在的清洁好物在种类众多齐全的不得了,可是你若说真正好用的清洁好物确是没有多少,甚至现在的清洁的产品很多人认为这个钱花的不值当,哎没有自己清洁来的实在,来的干净。虽然有这个想法的确锑电池吊打锂电池?比尔盖茨追投,A股概念股连续涨停锑现货价格去年7月至今涨幅已达86,锑进入供不应求的新周期。作者Eric编辑tuya出品财经涂鸦据公司情报专家财经涂鸦消息,近日,美国锑电池公司Ambri宣布了新一轮1。44亿美元有续航焦虑症?这两台5000mAh大电池手机可以帮到你数码时代,人们对于手机越来越依赖,工作需要手机游戏需要手机追剧看小说等等都需要手机。这就导致了每当电量显示变红时,我们就会开始焦虑情绪,害怕手机关机以后自己收不到消息和无事可做等等为什么欧洲人宁愿热死也不安装空调?背后原因是什么?空调500块钱,安装费1000块钱!背后原因是欧洲没有空调卖,也没有安装工。对于胡诌的问题,只能这样胡诌解释了。欧洲大部分在高纬度地区,海洋性气候。本来就不热!但凡初中毕业,也不至你真的足够了解独立站吗?精细化垂直站你又了解多少过去的2020年跨境电商市场增速迅猛,疫情改变消费模式,线下实体店的关闭,激增了大量的线上消费人群,加之世界依赖中国的工厂生产,由此促进了跨境电商行业的飞速发展。就目前情况来看,消