如何做网站公司网站开发项目报告书

张小明 2025/12/27 15:21:06
如何做网站公司,网站开发项目报告书,wordpress粘贴word,青岛开发区建网站哪家好SpringBoot–Redis基础知识 文章目录 SpringBoot--Redis基础知识1.Redis简介2.Redis能做什么3.Redis安装#xff08;Windows系统#xff09;3.1启动Redis3.2修改密码 4.SpringBoot项目中使用Redis4.1配置Redis4.2使用Spring封装的RedisTemplate操作redis4.2.1操作字符串 opsF…SpringBoot–Redis基础知识文章目录SpringBoot--Redis基础知识1.Redis简介2.Redis能做什么3.Redis安装Windows系统3.1启动Redis3.2修改密码4.SpringBoot项目中使用Redis4.1配置Redis4.2使用Spring封装的RedisTemplate操作redis4.2.1操作字符串 opsForValue4.2.2操作list opsForList4.2.3操作有序set opsForZSet4.2.4操作无序set opsForSet4.2.5操作hash opsForHash4.3StringRedisTemplate常用操作5.StringRedisTemplate与RedisTemplate区别1.Redis简介redis是一个key-value。和Memcached类似它支持存储的value类型相对更多包括string(字符串)、list(链表)、set(集合)、zset(sorted set–有序集合)和hash哈希类型)。Redis 内置了复制replicationLUA脚本LuascriptingLRU驱动事件LRU eviction事务transactions和不同级别的 磁盘持久化persistence并通过Redis哨兵Sentinel和自动分区Cluster提供高可用性high availability)。2.Redis能做什么缓存毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效排行榜利用Redis的SortSet数据结构能够非常方便搞定计算器/限速器利用Redis中原子性的自增操作我们可以统计类似用户点赞数、用户访问数等这类操作如果用MySQL频繁的读写会带来相当大的压力限速器比较典型的使用场景是限制某个用户访问某个API的频率常用的有抢购时防止用户疯狂点击带来不必要的压力; 注限速器也是对请求限流的一种实现方式好友关系利用集合的一些命令比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能简单消息队列除了Redis自身的发布/订阅模式我们也可以利用List来实现一个队列机制比如到货通知、邮件发送之类的需求不需要高可靠但是会带来非常大的DB压力完全可以用List来完成异步解耦Session共享默认Session是保存在服务器的文件中即当前服务器如果是集群服务同一个用户过来可能落在不同机器上这就会导致用户频繁登陆采用Redis保存Session后无论用户落在那台机器上都能够获取到对应的Session信息3.Redis安装Windows系统下载包 https://github.com/MicrosoftArchive/redis/releases解压到D盘目录下3.1启动Redis在解压后的目录下cmd直接输入命令redis-server.exe redis.windows.conf即可启动redis新建记事本文件startup.bat 输入redis-server.exe redis.windows.conf3.2修改密码Redis默认没有密码若想设置密码解压目录下找到redis.windows.conf文件中requirepass 下添加requirepass 密码保存重新运行即可4.SpringBoot项目中使用Redis4.1配置Redis引入相关JAR!--redis jar--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency在application.yml文件中添加相关配置spring:redis:# Redis服务器地址host:127.0.0.1# Redis数据库端口默认为6379port:6379# Redis服务器连接密码默认为空password:123456# Redis数据库索引默认为0database:1完成后SpringBoot自动在Spring容器中配置一个redisTemplate的Bean所以可以直接使用redisTemplate4.2使用Spring封装的RedisTemplate操作redis常用方法redisTemplate.opsForValue();//操作字符串redisTemplate.opsForHash();//操作hashredisTemplate.opsForList();//操作listredisTemplate.opsForSet();//操作setredisTemplate.opsForZSet();//操作有序set4.2.1操作字符串 opsForValue创建opsForValue对象AutowiredprivateRedisTemplateredisTemplate;// 创建opsForValue对象ValueOperationsvalueOperationsredisTemplate.opsForValue();存储字符串valueOperations.set(name,lisi);System.out.println(redisTemplate.opsForValue().get(name));输出结果:lisi设置失效时间TimeUnit.DAYS 天TimeUnit.HOURS 小时TimeUnit.MINUTES 分钟TimeUnit.SECONDS 秒TimeUnit.MILLISECONDS 毫秒//设置有效期 10秒后过期valueOperations.set(name,amy,10000,TimeUnit.MILLISECONDS);// 设置10秒后过期 10秒后,输出nullSystem.out.println(redisTemplate.opsForValue().get(name));支持整型与浮点型 increment)//自增 count1valueOperations.increment(count,1);//自增 count2valueOperations.increment(count,1);//输出count2System.out.println(valueOperations.get(count));追加字符串// 追加字符串 namelisiiii 如果name不存在则创建空字符串 因此APPEND在这种特殊情况下将类似于SETvalueOperations.append(name,iii);截取key所对应的value字符串// 获取字符串的子串 0-2 包含0不包含2System.out.println(valueOperations.get(name,0,2));返回key所对应的value值的长度System.out.println(valueOperations.size(name));存储一个对象 此类必须先序列化实现接口Serializable)RedisSerializerrsnewStringRedisSerializer();redisTemplate.setStringSerializer(rs);BillbillnewBill();bill.setProductName(iphone);bill.setProductDesc(手机);bill.setProductUnit(个);//存储对象 bill 到 redis 中valueOperations.set(bill,bill);//获取对象Billbill1(Bill)valueOperations.get(bill);;System.out.println(bill1);输出结果Bill(idnull,billCodenull,productNameiphone,productDesc手机,productUnit个,productCountnull,totalPricenull,isPaymentnull,providerIdnull,providernull)4.2.2操作list opsForList将所有指定的值插入存储在键的列表的头部;如果键不存在则在执行推送操作之前将其创建为空列表(从左边插入)//添加数据到list的头部listOperations.leftPush(names,苏暮雨);listOperations.leftPush(names,苏昌河);listOperations.leftPush(names,苏喆);//[苏喆, 苏昌河, 苏暮雨]将所有指定的值插入存储在键的列表的头部。如果键不存在则在执行推送操作之前将其创建为空列表。从右边插入)//添加数据到list的尾部listOperations.rightPush(names,白鹤淮);listOperations.rightPush(names,唐怜月);listOperations.rightPush(names,唐莲);返回存储在键中的列表的指定元素//获取list的所有元素System.out.println(listOperations.range(names,0,-1));//输出结果[苏喆, 苏昌河, 苏暮雨, 白鹤淮, 唐怜月, 唐莲]获取集合长度System.out.println(listOperations.size(names)); //输出结果6在列表中index的位置设置value值如果index不存在则报错//修改list的第4个元素索引从0开始 listOperations.set(names,3,雷云鹤); System.out.println(listOperations.range(names,0,-1)); 输出结果[苏喆, 苏昌河, 苏暮雨, 雷云鹤, 唐怜月, 唐莲]批量将一个数组插入到列表中//批量将一个数组插入到列表中String[]nameStr{萧瑟,无心,苏雨墨};listOperations.leftPushAll(names,nameStr);System.out.println(listOperations.range(names,0,-1));输出结果[苏雨墨,无心,萧瑟,苏喆,苏昌河,苏暮雨,雷云鹤,唐怜月,唐莲,白鹤淮,唐怜月,唐莲]从存储在键中的列表中删除等于值的元素的第一个计数事件countO删除等于从头到尾移动的值的元素count0删除等于从尾到头移动的值的元素countO删除等于value的所有元素//删除从索引开始遇到第一个匹配的元素删除它listOperations.remove(names,1,唐莲);//删除从尾部开始遇到第一个匹配的元素删除它listOperations.remove(names,-1,白鹤淮);//删除所有value唐怜月的的元素listOperations.remove(names,0,唐怜月);根据下标获取列表中的值下标是从0开始的//获取list的第3个元素索引从0开始 System.out.println(listOperations.index(names,2));4.2.3操作有序set opsForZSet创建 opsForZSet对象AutowiredprivateRedisTemplateredisTemplate;TestpublicvoidtestRedisTemplate(){ZSetOperationszSetOperationsredisTemplate.opsForZSet();}新增一个有序集合zSetOperations.add(zset1,zhangsan,100);zSetOperations.add(zset1,lisi,88);zSetOperations.add(zset1,wangwu,99);从有序集合中移除一个或者多个元素//从有序集合中移除一个或者多个元素zSetOperations.remove(zset1,lisi);//获取有序集合的所有元素System.out.println(zSetOperations.range(zset1,0,-1));输出结果[wangwu,zhangsan]增加元素的score值并返回增加后的值//增加有序集合的元素的分数zSetOperations.incrementScore(zset1,lisi,1);//获取有序集合的元素的分数System.out.println(zSetOperations.score(zset1,lisi));输出结果89获取有序集合的元素在有序集合中范围包含的索引//获取有序集合的元素在有序集合中范围包含的索引System.out.println(zSetOperations.rangeByScore(zset1,88,100));//获取有序集合的元素在有序集合中的数量System.out.println(zSetOperations.count(zset1,88,100));输出结果[lisi,wangwu,zhangsan]3获取有序集合的成员数//获取有序集合的成员数System.out.println(zSetOperations.size(zset1));//34.2.4操作无序set opsForSet创建opsForSet对象AutowiredprivateRedisTemplateredisTemplate;TestpublicvoidtestRedisTemplate(){//创建opsForSet对象SetOperationssetOperationsredisTemplate.opsForSet();}添加数据//添加数据String[]strArraysnewString[]{set1,set2,set3,set4};//将元素添加到集合中setOperations.add(setTest,strArrays);获取集合中的元素//获取集合中的元素System.out.println(setOperations.members(setTest));删除数据//获取集合中的元素System.out.println(setOperations.members(setTest));//删除数据setOperations.remove(setTest,set1);System.out.println(setOperations.members(setTest));输出结果[set4,set3,set1,set2][set4,set3,set2]获取集合的长度//获取集合的长度System.out.println(setOperations.size(setTest));输出结果3判断元素是否在集合中//判断元素是否在集合中System.out.println(setOperations.isMember(setTest,set2));输出结果true4.2.5操作hash opsForHash创建opsForHash对象AutowiredprivateRedisTemplateredisTemplate;TestpublicvoidtestRedisTemplate(){//创建opsForHash对象HashOperationshashOperationsredisTemplate.opsForHash();}添加数据//使用opsForHash对象操作哈希结构 添加数据hashOperations.put(users,name1,zhangsan);hashOperations.put(users,name2,lisi);hashOperations.put(users,name3,wangwu);删除数据//使用opsForHash对象操作哈希结构 删除数据hashOperations.delete(users,name1);获取数据//使用opsForHash对象操作哈希结构 获取数据System.out.println(hashOperations.get(users,name2));批量添加数据//使用opsForHash对象操作哈希结构 批量添加数据MapnewMapnewHashMap();newMap.put(map3,map3-3);newMap.put(map5,map5-5);hashOperations.putAll(users,newMap);4.3StringRedisTemplate常用操作AutowiredprivateStringRedisTemplatestringRedisTemplate;TestpublicvoidtestRedisTemplate(){//设置有效期 10分钟后过期stringRedisTemplate.opsForValue().set(test,909,600000,TimeUnit.MILLISECONDS);//60秒后,输出nullSystem.out.println(stringRedisTemplate.opsForValue().get(test));//909//获得键test的剩余有效期 单位:秒System.out.println(stringRedisTemplate.getExpire(test));//600//删除键teststringRedisTemplate.delete(test);//向指定key中存放set集合stringRedisTemplate.opsForSet().add(setTest,1,2,3);//获取集合setTest的所有元素System.out.println(stringRedisTemplate.opsForSet().members(setTest));//[1, 2, 3]//判断元素是否在Set集合中System.out.println(stringRedisTemplate.opsForSet().isMember(setTest,1));//true//获取集合的长度System.out.println(stringRedisTemplate.opsForSet().size(setTest));//3//添加数据到hash结构中stringRedisTemplate.opsForHash().put(hashTest,name1,lisi);stringRedisTemplate.opsForHash().put(hashTest,name2,wangwu);stringRedisTemplate.opsForHash().put(hashTest,name3,zhangsan);//判断hash结构中是否存在指定的keySystem.out.println(stringRedisTemplate.hasKey(hashTest));//true}5.StringRedisTemplate与RedisTemplate区别两者的关系是StringRedisTemplate继承RedisTemplate两者的数据是不共通的。StringRedisTemplate只能管理StringRedisTemplate里面的数据RedisTemplate只能管理RedisTemplate中的数据。两者的使用的序列化类不同。RedisTemplate使用的是JdkSerializationRedisSerializer存入数据会将数据先序列化成字节数组然后在存入Redis数据库。 StringRedisTemplate使用的是 StringRedisSerializer
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

建设银行360网站登录不了站群源码

Flex扫描器的使用与特性详解 1. 文字块的复制规则 在生成C源文件时,每个文字块的内容会逐字复制到其中。定义部分的文字块会在 yylex() 函数开始前复制,通常包含规则部分代码使用的变量和函数声明,以及头文件的 #include 行。 如果文字块以 %top{ 开头而非 %{ ,…

张小明 2025/12/26 14:51:33 网站建设

如何制作flash网站安徽柱石建设有限公司网站

面对数琳琅满目各具特色的项目管理软件,如何选择?深度解析十款2025年表现卓越的项目管理工具,找到最适合你团队的“项目管理大脑”。 1.进度猫核心定位:以甘特图为核心的项目进度管控独特优势:可视化甘特图直观清晰…

张小明 2025/12/26 14:51:00 网站建设

威海做网站wordpress文章顺序

期刊名称:电子设计工程影响因子:1.0ISSN:1674-6236期刊类型: 中文核心收录数据库: 知网(CNKI),万方(Wanfang),维普(VIP),中国科技论文与引文数据库(CSTPCD/科技核心)学科领域:工程技术-电子与电气, 计算机-…

张小明 2025/12/26 14:50:27 网站建设

网站设计 网站开发 西安深圳模板建站代理

基于MPC的永磁同步电机非线性终端滑模控制仿真研究 matlab simulink 无参考文件在电机控制领域,永磁同步电机(PMSM)以其高效、高功率密度等优点,广泛应用于工业、交通等诸多领域。为了实现PMSM更加精准、高效的控制,各…

张小明 2025/12/26 14:49:53 网站建设

DW怎么做招聘网站黄页网站推广app

计算机基础与 Microsoft Office 2007 入门全解析 1. 计算机基础:信息系统概述 在当今数字化时代,计算机已经成为人们生活和工作中不可或缺的工具。要想熟练运用计算机技术,了解信息系统的基本组成部分至关重要。信息系统主要由五个部分构成:人员、程序、软件、硬件和数据…

张小明 2025/12/26 14:49:20 网站建设

网站建设期末考试网站优化推广价格

LobeChat 的文件上传与语音交互:如何让 AI 真正“看懂”和“听懂” 在智能手机几乎成为人体延伸的今天,我们早已习惯了用语音发消息、拍照搜题、上传合同让 AI 总结重点。但你有没有想过,这些看似自然的操作背后,其实是一场人机交…

张小明 2025/12/26 14:48:46 网站建设