当前位置: 首页 > news >正文

网站推广营销公司网站不稳定

网站推广营销公司,网站不稳定,nat123做网站,dw网页设计代码免费1. Java连接Redis 思考#xff1a;我们之前操作redis都是通过命令行的客户端来操作。在开发时都是通过java项目操作redis java提高连接redis的方式为jedis。我们需要遵循jedis协议。 java提供连接mysql的方式为jdbc。 1.1 单机模式 引入依赖 !--引入java连接redis的驱动…1. Java连接Redis 思考我们之前操作redis都是通过命令行的客户端来操作。在开发时都是通过java项目操作redis java提高连接redis的方式为jedis。我们需要遵循jedis协议。 java提供连接mysql的方式为jdbc。 1.1 单机模式 引入依赖 !--引入java连接redis的驱动--dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion4.3.1/version/dependency若使用3.8.1的依赖jedis中的setex方法会被划去 dependencygroupIdrepMaven.redis.clients/groupIdartifactIdjedis/artifactIdversion3.8.0/version /dependency编写代码 package com.zmq;import redis.clients.jedis.Jedis;import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set;/*** program: redis1* description: java连接redis* author: zmq**/ public class Test01 {public static void main(String[] args) {//连接redis的信息默认连接本地的redis端口 端口号6379,所有关于redis操作的功能都在Jedis类中Jedis jedisnew Jedis(172.16.7.112,6379);//关于key的命令//获取所有key值SetString keys jedis.keys(*);System.out.println(获取所有的keyskeys);//删除key的个数Long del jedis.del(ll, l1);System.out.println(删除key的个数del);//判定指定的key是否存在Boolean k4 jedis.exists(k4);System.out.println(判断指定的k4是否存在k4);//给key指定过期时间jedis.expire(lll,100);//string类型//添加数据String set jedis.set(k1, v1);System.out.println(存入k1的值set);//获取指定的值String s jedis.get(k1);System.out.println(获取指定k1的值s);//判断指定的值是否存在若不存在就创建Long k2 jedis.setnx(k2, v2);System.out.println(如果k2不存在则设置k2的值k2);jedis.setnx(k3,110);//值递增Long k3 jedis.incr(k3);System.out.println(k3的值加1k3);//值递减Long k31 jedis.decr(k3);System.out.println(k3的值减1k31);//创建key并指定过期时间String setex jedis.setex(k4, 100, v3);System.out.println(setex);//关于hash的命令//存值long hset jedis.hset(h1, name, lay);System.out.println(存入h1的键值对hset);//设置一个mapMapString,String mapnew HashMap();map.put(name,章三);map.put(age,18);long h2 jedis.hset(h2, map);System.out.println(存入h2的键值对h2);//取值String hget jedis.hget(h2, name);System.out.println(获取h2中name的值hget);//获取key中的素有键值对的值MapString, String h21 jedis.hgetAll(h2);System.out.println(获取h2中所有键值对的值h21);//获取所有哈希表中的值ListString h22 jedis.hvals(h2);System.out.println(h22);//获取所有哈希表中所有的字段SetString h23 jedis.hkeys(h2);System.out.println(h23);} }关于连接redis的信息 连接redis的信息默认连接本地的redis端口 端口号6379 所有关于redis操作的功能都在Jedis类中 Jedis jedisnew Jedis(172.16.8.110,6379);关于key的命令 获取所有key值——keys~~~~keys //获取所有key值SetString keys jedis.keys(*);System.out.println(获取所有的keyskeys);删除key的个数——del~~~~del //删除key的个数Long del jedis.del(ll, l1);System.out.println(删除key的个数del);判定指定的可以是否存在——exists~~~~exists //判定指定的key是否存在Boolean k4 jedis.exists(k4);System.out.println(判断指定的k4是否存在k4);创建key并给key指定过期时间——expire~~~~expire //给key指定过期时间jedis.expire(lll,100);关于字符串String的命令 添加数据——set~~~~set //添加数据String set jedis.set(k1, v1);System.out.println(存入k1的值set);获取指定的值——get~~~~get //获取指定的值String s jedis.get(k1);System.out.println(获取指定k1的值s);判断指定的值是否存在若不存在就创建——setnx~~~~setnx //判断指定的值是否存在若不存在就创建Long k2 jedis.setnx(k2, v2);System.out.println(如果k2不存在则设置k2的值k2);值递增每次加1——incr~~~~incr jedis.setnx(k3,110);//值递增Long k3 jedis.incr(k3);System.out.println(k3的值加1k3);值递减每次减1——decr~~~~decr //值递减Long k31 jedis.decr(k3);System.out.println(k3的值减1k31);创建key并指定过期时间——setex~~~~setex //创建key并指定过期时间String setex jedis.setex(k4, 100, v3);System.out.println(setex);关于hash的命令 存值1——hset~~~~hset //存值long hset jedis.hset(h1, name, lay);System.out.println(存入h1的键值对hset);存值2存入map——hset~~~~hset //设置一个mapMapString,String mapnew HashMap();map.put(name,章三);map.put(age,18);long h2 jedis.hset(h2, map);System.out.println(存入h2的键值对h2);存值2存入map 获取指定的key中指定的键值对的value值——hget~~~~hget //取值String hget jedis.hget(h2, name);System.out.println(获取h2中name的值hget);获取key中所有键值对的值——hgetAll~~~~hgetAll //获取key中的素有键值对的值MapString, String h21 jedis.hgetAll(h2);System.out.println(获取h2中所有键值对的值h21);获取哈希表中所有的值——hvals~~~~hvals //获取所有哈希表中的值ListString h22 jedis.hvals(h2);System.out.println(h22);获取哈希表中所有的字段——hkeys~~~~hkeys //获取所有哈希表中所有的字段SetString h23 jedis.hkeys(h2);System.out.println(h23);1.2 集群模式 连接redis的信息 public static void main(String[] args) {SetHostAndPort nodesnew HashSet();nodes.add(new HostAndPort(# 1. Java连接Redis 思考我们之前操作redis都是通过命令行的客户端来操作。在开发时都是通过java项目操作redisjava提高连接redis的方式jedis。我们需要遵循jedis协议。****## 1.1 单机模式**引入依赖**xml !--引入java连接redis的驱动--dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion4.3.1/version/dependency若使用3.8.1的依赖jedis中的setex方法会被划去 dependencygroupIdrepMaven.redis.clients/groupIdartifactIdjedis/artifactIdversion3.8.0/version /dependency编写代码 package com.zmq;import redis.clients.jedis.Jedis;import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set;/*** program: redis1* description: java连接redis* author: zmq**/ public class Test01 {public static void main(String[] args) {//连接redis的信息默认连接本地的redis端口 端口号6379,所有关于redis操作的功能都在Jedis类中Jedis jedisnew Jedis(172.16.7.112,6379);//关于key的命令//获取所有key值SetString keys jedis.keys(*);System.out.println(获取所有的keyskeys);//删除key的个数Long del jedis.del(ll, l1);System.out.println(删除key的个数del);//判定指定的key是否存在Boolean k4 jedis.exists(k4);System.out.println(判断指定的k4是否存在k4);//给key指定过期时间jedis.expire(lll,100);//string类型//添加数据String set jedis.set(k1, v1);System.out.println(存入k1的值set);//获取指定的值String s jedis.get(k1);System.out.println(获取指定k1的值s);//判断指定的值是否存在若不存在就创建Long k2 jedis.setnx(k2, v2);System.out.println(如果k2不存在则设置k2的值k2);jedis.setnx(k3,110);//值递增Long k3 jedis.incr(k3);System.out.println(k3的值加1k3);//值递减Long k31 jedis.decr(k3);System.out.println(k3的值减1k31);//创建key并指定过期时间String setex jedis.setex(k4, 100, v3);System.out.println(setex);//关于hash的命令//存值long hset jedis.hset(h1, name, lay);System.out.println(存入h1的键值对hset);//设置一个mapMapString,String mapnew HashMap();map.put(name,章三);map.put(age,18);long h2 jedis.hset(h2, map);System.out.println(存入h2的键值对h2);//取值String hget jedis.hget(h2, name);System.out.println(获取h2中name的值hget);//获取key中的素有键值对的值MapString, String h21 jedis.hgetAll(h2);System.out.println(获取h2中所有键值对的值h21);//获取所有哈希表中的值ListString h22 jedis.hvals(h2);System.out.println(h22);//获取所有哈希表中所有的字段SetString h23 jedis.hkeys(h2);System.out.println(h23);} }关于连接redis的信息 连接redis的信息默认连接本地的redis端口 端口号6379 所有关于redis操作的功能都在Jedis类中 Jedis jedisnew Jedis(172.16.8.110,6379);关于key的命令 获取所有key值——keys~~~~keys //获取所有key值SetString keys jedis.keys(*);System.out.println(获取所有的keyskeys);删除key的个数——del~~~~del //删除key的个数Long del jedis.del(ll, l1);System.out.println(删除key的个数del);判定指定的可以是否存在——exists~~~~exists //判定指定的key是否存在Boolean k4 jedis.exists(k4);System.out.println(判断指定的k4是否存在k4);创建key并给key指定过期时间——expire~~~~expire //给key指定过期时间jedis.expire(lll,100);关于字符串String的命令 添加数据——set~~~~set //添加数据String set jedis.set(k1, v1);System.out.println(存入k1的值set);获取指定的值——get~~~~get //获取指定的值String s jedis.get(k1);System.out.println(获取指定k1的值s);判断指定的值是否存在若不存在就创建——setnx~~~~setnx //判断指定的值是否存在若不存在就创建Long k2 jedis.setnx(k2, v2);System.out.println(如果k2不存在则设置k2的值k2);值递增每次加1——incr~~~~incr jedis.setnx(k3,110);//值递增Long k3 jedis.incr(k3);System.out.println(k3的值加1k3);值递减每次减1——decr~~~~decr //值递减Long k31 jedis.decr(k3);System.out.println(k3的值减1k31);创建key并指定过期时间——setex~~~~setex //创建key并指定过期时间String setex jedis.setex(k4, 100, v3);System.out.println(setex);关于hash的命令 存值1——hset~~~~hset //存值long hset jedis.hset(h1, name, lay);System.out.println(存入h1的键值对hset);存值2存入map——hset~~~~hset //设置一个mapMapString,String mapnew HashMap();map.put(name,章三);map.put(age,18);long h2 jedis.hset(h2, map);System.out.println(存入h2的键值对h2);存值2存入map 获取指定的key中指定的键值对的value值——hget~~~~hget //取值String hget jedis.hget(h2, name);System.out.println(获取h2中name的值hget);获取key中所有键值对的值——hgetAll~~~~hgetAll //获取key中的素有键值对的值MapString, String h21 jedis.hgetAll(h2);System.out.println(获取h2中所有键值对的值h21);获取哈希表中所有的值——hvals~~~~hvals //获取所有哈希表中的值ListString h22 jedis.hvals(h2);System.out.println(h22);获取哈希表中所有的字段——hkeys~~~~hkeys //获取所有哈希表中所有的字段SetString h23 jedis.hkeys(h2);System.out.println(h23);1.2 集群模式 连接redis的信息 public static void main(String[] args) {SetHostAndPort nodesnew HashSet();nodes.add(new HostAndPort(192.168.112.189,7001));nodes.add(new HostAndPort(192.168.112.189,7002));nodes.add(new HostAndPort(192.168.112.189,7003));nodes.add(new HostAndPort(192.168.112.189,7004));nodes.add(new HostAndPort(192.168.112.189,7005));nodes.add(new HostAndPort(192.168.112.189,7006));JedisCluster jedisClusternew JedisCluster(nodes);jedisCluster.set(k5,666);System.out.println(jedisCluster.get(k5));}适合ssm项目 2. springboot整合redis starter启动依赖——包含自动装配类完成相应的装配功能 有关依赖——spring-boot-starter-data-redis !--引入了redis整合springboot 的依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency修改配置文件 #单机模式的配置 #Redis服务器连接端口 spring.redis.port6379 #Redis服务器地址 spring.redis.hostIP地址 #Redis数据库索引(默认为0) spring.redis.database1 #连接池最大连接数(使用负值表示没有限制) #spring.redis.jedis.pool.max-active100 #连接池中的最大空闲连接 spring.redis.jedis.pool.max-idle10 #连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.jedis.pool.max-wait10000ms使用 springboot整合redis时封装了两个工具类StringRedisTemplate和RedisTemplate——springboot中用于操作redsi的类 StringRedisTemplate它是RedisTemplate的子类。StringRedisTemplate里面只能存放字符串的内容 2.1 StringRedisTemplate 在测试类中进行相关方法的测试 首先需要自动注入StringRedisTemplate类 StringRedisTemplate类是RedisTemplate的子类key和value均为字符串 RedisTemplate中定义了5中数据结构操作 stringRedisTemplate.opsForValue();//操作字符串stringRedisTemplate.opsForHash();//操作hashstringRedisTemplate.opsForList();//操作列表stringRedisTemplate.opsForSet();//操作无序集合stringRedisTemplate.opsForZSet();//操作有序集合——有序是score的有序关于key的操作 获取所有的key——keys //获取所有的keySetString keys stringRedisTemplate.keys(*);System.out.println(所有的key:keys);返回值为Set集合因为key唯一 是否删除指定的key返回值为boolean——delete——释放锁 //删除指定的key——返回值为booleanBoolean k1 stringRedisTemplate.delete(k1);System.out.println(是否删除指定的k1:k1);返回值为boolean 是否存在指定key——haskey //判断指定的key是否存在——返回值为booleanBoolean k11 stringRedisTemplate.hasKey(k1);System.out.println(是否存在k1:k11);返回值为boolean 是否设置过期时间——expire //设置过期时间——返回值为booleanBoolean k12 stringRedisTemplate.expire(k1, 10, TimeUnit.HOURS);System.out.println(是否设置过期时间:k12);返回值为boolean 根据key获取过期时间——getExpire //根据key获取过期时间 stringRedisTemplate.getExpire(test);根据key获取过期时间并换算成指定的单位——getExpire //根据key获取过期时间并换算成指定单位 stringRedisTemplate.getExpire(test,TimeUnit.SECONDS); getExpire(“test”,TimeUnit.SECONDS) //关于key的操作Testvoid testKeys() {//获取所有的keySetString keys stringRedisTemplate.keys(*);System.out.println(所有的key:keys);//删除指定的key——返回值为booleanBoolean k1 stringRedisTemplate.delete(k1);System.out.println(是否删除指定的k1:k1);//判断指定的key是否存在——返回值为booleanBoolean k11 stringRedisTemplate.hasKey(k1);System.out.println(是否存在k1:k11);//设置过期时间——返回值为booleanBoolean k12 stringRedisTemplate.expire(k1, 10, TimeUnit.HOURS);System.out.println(是否设置过期时间:k12);}关于String的操作 得到操作字符串的类对象——opsForValue //得到操作字符串的类对象ValueOperationsString, String opsForValue stringRedisTemplate.opsForValue();存放数据——set //存放数据---set(k,v)opsForValue.set(k1,v1);存放数据含有过期时间——set //存放数据--setex(k,second,v)opsForValue.set(k2,20,2,TimeUnit.MINUTES); 存放数据先判断是否已存在——setIfAbsent——分布式锁 //存放数据--setnx(k,v)Boolean aBoolean opsForValue.setIfAbsent(k3, v3, 2, TimeUnit.MINUTES);System.out.println(是否设置成功:aBoolean); 根据key获取val——get //获取指定的元素String k1 opsForValue.get(k1);System.out.println(获取指定的元素:k1);自增——incream //自增Long k21 opsForValue.increment(k2);System.out.println(自增1k21);自增指定长度——incream //自增指定长度Long k2 opsForValue.increment(k2, 10);System.out.println(获取指定的元素:k2);自减指定长度——incream,数值为负数即可 //自减Long k22 opsForValue.increment(k2, -1);System.out.println(获取指定的元素k22);重新赋值——getAndSet //重新赋值String andSet opsForValue.getAndSet(k1, vvvv);System.out.println(重新赋值andSet);//关于String的操作: 在封装的StringRedisTemplate类对应每种数据类型的操作 对应相应的类来完成Testvoid testString() {//得到操作字符串的类对象ValueOperationsString, String opsForValue stringRedisTemplate.opsForValue();//存放数据---set(k,v)opsForValue.set(k1,v1);//存放数据--setex(k,second,v)opsForValue.set(k2,20,2,TimeUnit.MINUTES);//存放数据--setnx(k,v)Boolean aBoolean opsForValue.setIfAbsent(k3, v3, 2, TimeUnit.MINUTES);System.out.println(是否设置成功:aBoolean);//获取指定的元素String k1 opsForValue.get(k1);System.out.println(获取指定的元素:k1);//自增Long k21 opsForValue.increment(k2);System.out.println(自增1k21);//自增指定长度Long k2 opsForValue.increment(k2, 10);System.out.println(获取指定的元素:k2);//自减Long k22 opsForValue.increment(k2, -1);System.out.println(获取指定的元素k22);//重新赋值String andSet opsForValue.getAndSet(k1, vvvv);System.out.println(重新赋值andSet);}关于Hash的操作——适合存放对象操作属性方便 获取操作字符串的类对象——opsForHash //获取操作字符串的类对象HashOperationsString, Object, Object forHash stringRedisTemplate.opsForHash();存放数据——put //存放数据 hset(key,field,value)forHash.put(user,name,ykq);存放map集合——putAll //存放mapMapString,String mapnew HashMap();map.put(age,18);map.put(adrress,北京);forHash.putAll(user,map);获取指定的元素——get //获取指定的元素 hget(key,field)Object o forHash.get(user, name);System.out.println(获取指定的元素:o);获取所有的元素——entries MapObject, Object user forHash.entries(user);System.out.println(获取所有的元素:user);获取所有的key——keys SetObject user1 forHash.keys(user);System.out.println(获取所有的key:user1);获取所有的value——values ListObject user2 forHash.values(user);System.out.println(获取所有的value:user2);//关于Hash的操作Testpublic void testHash(){//获取操作字符串的类对象HashOperationsString, Object, Object forHash stringRedisTemplate.opsForHash();//存放数据 hset(key,field,value)forHash.put(user,name,ykq);//存放mapMapString,String mapnew HashMap();map.put(age,18);map.put(adrress,北京);forHash.putAll(user,map);//获取指定的元素 hget(key,field)Object o forHash.get(user, name);System.out.println(获取指定的元素:o);MapObject, Object user forHash.entries(user);System.out.println(获取所有的元素:user);SetObject user1 forHash.keys(user);System.out.println(获取所有的key:user1);ListObject user2 forHash.values(user);System.out.println(获取所有的value:user2);}2.2 RedisTemplate 它属于StringRedisTemplate的父类它的泛型默认都是Object。它可以直接存储任意类型的key和value 序列化 //自动注入StringRedisTemplate模板Autowiredprivate RedisTemplate redisTemplate;Testpublic void test1(){ValueOperations valueOperations redisTemplate.opsForValue();//第一次存值valueOperations.set(k111,v11);//此时出现乱码且在RedisPlus图形化工具中并不能点击该key显示该key不存在System.out.println(valueOperations.get(k111));//org.springframework.data.redis.serializer.SerializationException: 会出现序列化异常需要实体类User实现序列化接口//第二次存值valueOperations.set(k12,new User(zxy,18));//把内存中的数据存入磁盘---序列化过程}上述代码显示的问题 第一次存值可以成功运行但出现乱码且在RedisPlus图形化工具中并不能点击该key显示该key不存在第二次存值报错序列化异常需要实体类User实现序列化接口 分析key出现乱码 key值为乱码所以key需要序列化而key默认的序列化方式为JDK序列化为二进制 StringRedisTemplate类并没有出现乱码——因为他有自己的序列化方式没有实现JDK序列化 解决设置key的序列化方式 //设置key的序列化方式redisTemplate.setKeySerializer(new StringRedisSerializer());此时解决key的乱码问题图形化界面的key可以点击查看发现value值为乱码 value值为乱码value默认的序列化方式也为JDK序列化JDK序列化方式需要实现序列化接口 StringRedisTemplate类并没有出现乱码——因为他有自己的序列化方式没有实现JDK序列化 解决设置value的序列化方式 //2. 设置value的序列化方式redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializerObject(Object.class));使用Jackson2JsonRedisSerializer序列化的时候,如果实体类上没有set方法反序列化会报错。 若使用FastJsonRedisSerializer序列化方式需要引入fastjson依赖 dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.83/version/dependency如果使用RedisTemplate每次都需要人为指定key和value的序列化所以抽象出指定key和value序列化的工具类 配置文件 Configuration public class RedisConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory redisConnectionFactory) {Jackson2JsonRedisSerializerObject jackson2JsonRedisSerializer new Jackson2JsonRedisSerializerObject(Object.class);ObjectMapper om new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);RedisTemplateString, Object template new RedisTemplateString, Object();template.setConnectionFactory(redisConnectionFactory);template.setKeySerializer(jackson2JsonRedisSerializer);template.setValueSerializer(jackson2JsonRedisSerializer);template.setHashKeySerializer(jackson2JsonRedisSerializer);template.setHashValueSerializer(jackson2JsonRedisSerializer);template.afterPropertiesSet();return template;} }2.3 集群模式 修改配置文件即可 #集群模式 spring.redis.cluster.nodes192.168.112.189:7006,192.168.112.189:7001,192.168.112.189:7002,192.168.112.189:7003,192.168.112.189:7004,192.168.112.189:70052.4 二者区别 StringRedisTemplate和RedisTemplate的区别 前者集成后者数据不共通的。即StringRedisTemplate只能管理StringRedisTemplate里面的数据RedisTemplate只能管理RedisTemplate中的数据SDR默认采用的序列化有两种。一种是String的序列化策略一种是JDK的序列化策略StringRedisTemplate默认采用的是String 的序列化策略保存的key和value都是采用的该策略序列化并保存的RedisTemplate默认采用的是JDK的序列化策略保存的 key和value都是采用此策略序列化并保存的
http://www.w-s-a.com/news/134524/

相关文章:

  • ui设计网站设计与网页制作视频教程wordpress插件漏洞利用
  • 网站建设公司排名前十做网站的最终目的
  • 选择网站开发公司的标准中国网站建设市场规模
  • 衣服网站建设策划书广州住房和城乡建设部网站
  • 微商城科技淄博网站建设优化seo
  • 杭州 网站设计制作东圃手机网站开发
  • 网站文章页内链结构不好可以改吗微信平台如何开发
  • 炫酷业务网站课程网站如何建设方案
  • 网站建设服务器可以租吗wordpress微信打赏
  • 网站制作的重要流程图大连网站优化快速排名
  • 河南省住房建设厅官方网站注册公司邮箱需要什么
  • 美橙网站注册华为手机网站建设策划方案论文
  • 河南省和建设厅网站首页在线图片翻译
  • 关于备案空壳网站清理通知去别人网站挂黑链
  • 做网站待遇世界购物平台排行榜
  • 售后服务网站什么网站免费做简历模板
  • 网站模板怎么修改成都网站优化seo
  • 给装修公司做推广的网站wordpress站点的根目录
  • 怎么创建企业网站wordpress怎么做404页面跳转
  • 福建省住房和建设厅网站网站做著作权
  • 编程代码网站网站搭建的注意事项
  • 音乐网站排名公司如何做自己的网站
  • 网站设计模式三网合一网站源代码
  • 珠海市品牌网站建设哪家好宛城区网站制作
  • 网站维护工程师代写文章兼职
  • 贵州城乡和建设厅网站企业网站备案名称窍门
  • .cc后缀网站湛江霞山
  • 青岛制作网站软件ui设计培训哪里好
  • 网站建设的构思环保公司宣传册设计样本
  • 如何做微网站网站和网店的区别