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

手机网站建设推广自己做的博客网站吗

手机网站建设推广,自己做的博客网站吗,电影网站建设多少钱,中企动力会员控制平台传送门 docker系列1#xff1a;docker安装 docker系列2#xff1a;阿里云镜像加速器 docker系列3#xff1a;docker镜像基本命令 docker系列4#xff1a;docker容器基本命令 docker系列5#xff1a;docker安装nginx Docker安装redis 通过前面4节#xff0c;对docke…传送门 docker系列1docker安装 docker系列2阿里云镜像加速器 docker系列3docker镜像基本命令 docker系列4docker容器基本命令 docker系列5docker安装nginx Docker安装redis 通过前面4节对docker有了一个基本了解包括环境安装及镜像与容器的相关操作命令。 在上一节通过docker安装nginx来体验了一下docker安装的便捷之处现在通过docker来试试安装redis吧 之前通过手工的方式安装过单机版本的redis步骤还是比较烦琐那么通过docker安装呢还是参考nginx安装的流程首先确定redis的版本 确定版本 之前在linux服务器上面安装了的linux版本较高后来ECS服务器到期释放了。最后都是直接用的windows上面的版本较低 这次就直接上最新的通过docker在docker hub上面查找  拉取镜像 确定了redis版本就可以进行镜像的下载了。 执行拉取redis镜像 如上讨论选择redis最新版本来安装执行命令docker pull redis docker pull redis 然后下载成功会显示类似如下信息  查看nginx镜像 然后再执行镜像查看命令docker images  运行redis 现在到了第3步了那就是通过docker来运行redis 执行启动redis命令 这里注意的是因为选择是最新版本了所以运行的时候 docker run -it -d --name test_redis redis /bin/bash 查看运行结果 执行之后可以docker ps来查看一下 验证redis 经过了上面的三步曲现在来验证一下redis是否安装成功可以通过访问服务来验证 因为是阿里云服务器 redis默认的端口是6379直接用客户端工具连接会发现失败了 这个原因在就在于容器的端口没有跟服务器端口进行映射 端口映射 把上面的命令稍作修改并重新启动成功 docker run -it -d --name test_redis redis -p 6379:6379 /bin/bash 端口开放 注意服务器的端口需要开放如果是云服务器还在安全组设置一下 配置文件redis.conf 在使用Docker容器时有时候需要对Redis进行配置但是Docker镜像中并没有默认的redis.conf如何设置该文件参考docker没有redis.conf及redis的下载地址最终命令 docker run --name test_redis -p 6379:6379 -v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf -d redis 再次验证连接信息显示成功 JAVA集成redis 当redis搭建好之后可以通过java连接还是用原来的tsm工程来测试因为是springboot框架所以使用spring-boot-starter-data-redis组件。 pom坐标 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactIdversion3.1.3/version/dependency!--lettuce 依赖commons-pool--dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependency 配置文件 这里使用上面docker搭建的redis在application.properties文件里面配置如下 # # spring-redis # # 若没有密码则需要注释这个配置项 # spring.redis.password spring.redis.timeout10000# 单机替换成实际的连接地址 spring.redis.host127.0.0.1 spring.redis.port6379spring.redis.lettuce.pool.max-active8 spring.redis.lettuce.pool.max-wait-1 spring.redis.lettuce.pool.min-idle0 spring.redis.lettuce.pool.max-idle8 配置类 这个组件主要是使用RedisTemplate主要配置文件如下 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;Configuration public class RedisConfiguration {/*** spring-boot-autoconfigure的RedisAutoConfiguration自动注册的RedisTemplate使用的序列化器为默人的JdkSerializationRedisSerializer序列化后生成的是不利于阅读的编码字符串。* 所以我们手动注册一个RedisTemplate设置RedisConnectionFactory属性为spring-boot-autoconfigure的JedisConnectionConfiguration/LettuceConnectionConfiguration自动注册的RedisConnectionFactory并设置序列化器为StringRedisSerializer。* 其实也可以直接在主启动类中使用Autowired注入SpringBoot自动注册的RedisTemplate并添加一个PostConstruct的方法来修改它的序列化器为StringRedisSerializer。*/Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory redisConnectionFactory){final RedisTemplateString, Object template new RedisTemplate();// 设置ConnectionFactorySpringBoot会自动注册ConnectionFactory-Beantemplate.setConnectionFactory(redisConnectionFactory);// 设置序列化器为StringRedisSerializer默认是 JdkSerializationRedisSerializer , java操作时会产生乱码StringRedisSerializer stringRedisSerializer new StringRedisSerializer();template.setKeySerializer(stringRedisSerializer);template.setHashKeySerializer(stringRedisSerializer);template.setHashValueSerializer(stringRedisSerializer);template.setValueSerializer(new JdkSerializationRedisSerializer());template.afterPropertiesSet();return template;}/*** 配置StringRedisTemplate* param factory* return*/Beanpublic StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {StringRedisTemplate redisTemplate new StringRedisTemplate();redisTemplate.setConnectionFactory(factory);redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());return redisTemplate;} }操作工具类 针对redis支持的数据类型可以定制成工具类 import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils;Component public class RedisUtil {Autowiredprivate RedisTemplateString, Object redisTemplate;// common/*** 指定缓存失效时间* param key 键* param time 时间(秒)* return*/public boolean expire(String key, long time) {try {if (time 0) {redisTemplate.expire(key, time, TimeUnit.SECONDS);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 根据key 获取过期时间* param key 键 不能为null* return 时间(秒) 返回0代表为永久有效*/public long getExpire(String key) {return redisTemplate.getExpire(key, TimeUnit.SECONDS);}/*** 判断key是否存在* param key 键* return true 存在 false不存在*/public boolean hasKey(String key) {try {return redisTemplate.hasKey(key);} catch (Exception e) {e.printStackTrace();return false;}}/*** 删除缓存* param key 可以传一个值 或多个*/SuppressWarnings(unchecked)public void del(String... key) {if (key ! null key.length 0) {if (key.length 1) {redisTemplate.delete(key[0]);} else {redisTemplate.delete(CollectionUtils.arrayToList(key));}}}// String/*** 普通缓存获取* param key 键* return 值*/public Object get(String key) {return key null ? null : redisTemplate.opsForValue().get(key);}/*** 普通缓存放入* param key 键* param value 值* return true成功 false失败*/public boolean set(String key, Object value) {try {redisTemplate.opsForValue().set(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 普通缓存放入并设置时间* param key 键* param value 值* param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期* return true成功 false 失败*/public boolean set(String key, Object value, long time) {try {if (time 0) {redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);} else {set(key, value);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 递增* param key 键* param delta 要增加几(大于0)* return*/public long incr(String key, long delta) {if (delta 0) {throw new RuntimeException(递增因子必须大于0);}return redisTemplate.opsForValue().increment(key, delta);}/*** 递减* param key 键* param delta 要减少几(小于0)* return*/public long decr(String key, long delta) {if (delta 0) {throw new RuntimeException(递减因子必须大于0);}return redisTemplate.opsForValue().increment(key, -delta);}// Map/*** HashGet* param key 键 不能为null* param item 项 不能为null* return 值*/public Object hget(String key, String item) {return redisTemplate.opsForHash().get(key, item);}/*** 获取hashKey对应的所有键值* param key 键* return 对应的多个键值*/public MapObject, Object hmget(String key) {return redisTemplate.opsForHash().entries(key);}/*** HashSet* param key 键* param map 对应多个键值* return true 成功 false 失败*/public boolean hmset(String key, MapString, Object map) {try {redisTemplate.opsForHash().putAll(key, map);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** HashSet 并设置时间* param key 键* param map 对应多个键值* param time 时间(秒)* return true成功 false失败*/public boolean hmset(String key, MapString, Object map, long time) {try {redisTemplate.opsForHash().putAll(key, map);if (time 0) {expire(key, time);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 向一张hash表中放入数据,如果不存在将创建* param key 键* param item 项* param value 值* return true 成功 false失败*/public boolean hset(String key, String item, Object value) {try {redisTemplate.opsForHash().put(key, item, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 向一张hash表中放入数据,如果不存在将创建* param key 键* param item 项* param value 值* param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间* return true 成功 false失败*/public boolean hset(String key, String item, Object value, long time) {try {redisTemplate.opsForHash().put(key, item, value);if (time 0) {expire(key, time);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 删除hash表中的值* param key 键 不能为null* param item 项 可以使多个 不能为null*/public void hdel(String key, Object... item) {redisTemplate.opsForHash().delete(key, item);}/*** 判断hash表中是否有该项的值* param key 键 不能为null* param item 项 不能为null* return true 存在 false不存在*/public boolean hHasKey(String key, String item) {return redisTemplate.opsForHash().hasKey(key, item);}/*** hash递增 如果不存在,就会创建一个 并把新增后的值返回* param key 键* param item 项* param by 要增加几(大于0)* return*/public double hincr(String key, String item, double by) {return redisTemplate.opsForHash().increment(key, item, by);}/*** hash递减* param key 键* param item 项* param by 要减少记(小于0)* return*/public double hdecr(String key, String item, double by) {return redisTemplate.opsForHash().increment(key, item, -by);}// set/*** 根据key获取Set中的所有值* param key 键* return*/public SetObject sGet(String key) {try {return redisTemplate.opsForSet().members(key);} catch (Exception e) {e.printStackTrace();return null;}}/*** 根据value从一个set中查询,是否存在* param key 键* param value 值* return true 存在 false不存在*/public boolean sHasKey(String key, Object value) {try {return redisTemplate.opsForSet().isMember(key, value);} catch (Exception e) {e.printStackTrace();return false;}}/*** 将数据放入set缓存* param key 键* param values 值 可以是多个* return 成功个数*/public long sSet(String key, Object... values) {try {return redisTemplate.opsForSet().add(key, values);} catch (Exception e) {e.printStackTrace();return 0;}}/*** 将set数据放入缓存* param key 键* param time 时间(秒)* param values 值 可以是多个* return 成功个数*/public long sSetAndTime(String key, long time, Object... values) {try {Long count redisTemplate.opsForSet().add(key, values);if (time 0)expire(key, time);return count;} catch (Exception e) {e.printStackTrace();return 0;}}/*** 获取set缓存的长度* param key 键* return*/public long sGetSetSize(String key) {try {return redisTemplate.opsForSet().size(key);} catch (Exception e) {e.printStackTrace();return 0;}}/*** 移除值为value的* param key 键* param values 值 可以是多个* return 移除的个数*/public long setRemove(String key, Object... values) {try {Long count redisTemplate.opsForSet().remove(key, values);return count;} catch (Exception e) {e.printStackTrace();return 0;}}// list/*** 获取list缓存的内容* param key 键* param start 开始* param end 结束 0 到 -1代表所有值* return*/public ListObject lGet(String key, long start, long end) {try {return redisTemplate.opsForList().range(key, start, end);} catch (Exception e) {e.printStackTrace();return null;}}/*** 获取list缓存的长度* param key 键* return*/public long lGetListSize(String key) {try {return redisTemplate.opsForList().size(key);} catch (Exception e) {e.printStackTrace();return 0;}}/*** 通过索引 获取list中的值* param key 键* param index 索引 index0时 0 表头1 第二个元素依次类推index0时-1表尾-2倒数第二个元素依次类推* return*/public Object lGetIndex(String key, long index) {try {return redisTemplate.opsForList().index(key, index);} catch (Exception e) {e.printStackTrace();return null;}}/*** 将list放入缓存* param key 键* param value 值* param time 时间(秒)* return*/public boolean lSet(String key, Object value) {try {redisTemplate.opsForList().rightPush(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 将list放入缓存* param key 键* param value 值* param time 时间(秒)* return*/public boolean lSet(String key, Object value, long time) {try {redisTemplate.opsForList().rightPush(key, value);if (time 0)expire(key, time);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 将list放入缓存* param key 键* param value 值* param time 时间(秒)* return*/public boolean lSet(String key, ListObject value) {try {redisTemplate.opsForList().rightPushAll(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 将list放入缓存** param key 键* param value 值* param time 时间(秒)* return*/public boolean lSet(String key, ListObject value, long time) {try {redisTemplate.opsForList().rightPushAll(key, value);if (time 0)expire(key, time);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 根据索引修改list中的某条数据* param key 键* param index 索引* param value 值* return*/public boolean lUpdateIndex(String key, long index, Object value) {try {redisTemplate.opsForList().set(key, index, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 移除N个值为value* param key 键* param count 移除多少个* param value 值* return 移除的个数*/public long lRemove(String key, long count, Object value) {try {Long remove redisTemplate.opsForList().remove(key, count, value);return remove;} catch (Exception e) {e.printStackTrace();return 0;}} } 代码测试 写一个测试类如下 import com.tw.tsm.base.util.RedisUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;RestController Slf4j RequestMapping(/redis) public class RedisTestController {Autowiredprivate RedisUtil redisUtil;GetMapping(/set)public void testSet(RequestParam(key) String key, RequestParam(val) String val){redisUtil.set(key, val);}GetMapping(/get)public String testGet(RequestParam(key) String key){return (String)redisUtil.get(key);} }
http://www.yutouwan.com/news/114501/

相关文章:

  • 温州论坛吧海阳seo排名
  • 教做衣服的网站有哪些网站建设公司 电话销售没什么效果
  • 电子商务网站怎么做wordpress文章地址
  • 建设信用卡银行积分兑换商城网站广告图片在线制作
  • 可以注册邮箱的网站网站开发 chrome gimp
  • 彩票网站怎么做网站建设的总结
  • 一站式网站建设有哪些wordpress视频下载
  • 河南怎么样做网站wordpress 蜘蛛插件
  • 宝山品牌网站建设注册一个小公司需要什么条件
  • 网站建设程序文件零基础自学python
  • 音乐网站要怎么做找别人建网站去哪里
  • 石家庄正规网站建设公司国外做家居类的网站
  • 杭州建站价格网站开发时图片加载慢怎么解决
  • 网站建设拾金手指下拉十九摄影网站开发的意义
  • 个人网站空间准备广告营销公司
  • 大人怎么做羞羞的网站教育培训机构招生网站建设
  • 图书馆网站建设建议网站开发开票
  • 如何免费建一个网站如何自建网站?
  • 连云港市建设局网站广告机
  • 小时的网站建设智慧团建手机登录端口
  • 深圳集团网站建设案例中国建设教育协会网站打不开
  • 网站有没有做301wordpress 数据库设置
  • 苏州网站推广哪家好网站地图作用
  • 郑州网站建设制作公司建设的网站属于固定资产么
  • 外网建筑设计网站怎么注册公司营业执照
  • 网站项目宣传片wordpress获取文章id方法
  • 网站开发研究论文太原论坛2021
  • 网站公告栏模板wordpress主题module破解版
  • 怎么和网站建设公司签合同网站空间买什么的好
  • 行业用品网站怎么建设外链找个做游戏的视频网站好