企业网站需要的模块公司网站的关键词推广怎么做
- 作者: 五速梦信息网
- 时间: 2026年03月21日 09:58
当前位置: 首页 > news >正文
企业网站需要的模块,公司网站的关键词推广怎么做,西安建设和住房保障局网站首页,网址导航下载Redis入门
Redis简介
Redis 是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 Redis是一个基于内存的 key-value 结构数据库。 主要特点#xff1a; 1、基于内存存储#xff0c;读写性能高 2、适合存储热点数据#xff08;热点…
Redis入门
Redis简介
Redis 是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 Redis是一个基于内存的 key-value 结构数据库。 主要特点 1、基于内存存储读写性能高 2、适合存储热点数据热点商品、资讯、新闻 3、企业应用广泛 官网https://redis.io 中文网Redis中文网 Redis 是用C语言开发的一个开源的高性能键值对(key-value)数据库官方提供的数据是可以达到 100000 的 QPS每秒内查询次数。它存储的 value 类型比较丰富也被称为结构化的 NoSql 数据库。 NoSqlNot Only SQL不仅仅是SQL泛指非关系型数据库。NoSql数据库并不是要取代关系型数据库而是关系型数据库的补充。 关系型数据库(RDBMS) MysqlOracleDB2SQLServer 非关系型数据库(NoSql) RedisMongo dbMemCached Redis下载与安装 Redis 安装包分为 windows 版和 Linux 版 Windows版下载地址https://github.com/microsoftarchive/redis/releases Linux版下载地址 Index of /releases/ Redis 安装
Redis的Windows版属于绿色软件直接解压即可使用解压后目录结构如下
Redis服务启动与停止 服务启动命令redis-server.exe redis.windows.conf Redis 服务默认端口号为 6379 通过快捷键 Ctrl C 即可停止 Redis 服务 客户端连接命令redis-cli.exe 通过redis-cli.exe命令默认连接的是本地的redis服务并且使用默认6379端口。也可以通过指定如下参数连接 -h ip地址 -p 端口号 -a 密码如果需要 默认无密码 设置Redis服务密码修改redis.windows.conf 注意 • 修改密码后需要重启 Redis 服务才能生效 • Redis 配置文件中 # 表示注释 Redis客户端图形工具 Redis数据类型
5种常用数据类型介绍 Redis存储的是key-value结构的数据其中key是字符串类型value有5种常用的数据类型 • 字符串 string • 哈希 hash • 列表 list • 集合 set • 有序集合 sorted set / zset 各种数据类型的特点 各种数据类型的特点 • 字符串(string)普通字符串 Redis 中最简单的数据类型 • 哈希(hash)也叫散列类似于 Java 中的 HashMap 结构 • 列表(list)按照插入顺序排序可以有重复元素类似于 Java 中的 LinkedList • 集合(set)无序集合没有重复元素类似于 Java 中的 HashSet • 有序集合(sorted set / zset)集合中每个元素关联一个分数score根据分数升序排序没有重复元素 Redis常用命令
字符串操作命令 Redis 字符串类型常用命令 SET key value 设置指定key的值GET key 获取指定key的值SETEX key seconds value 设置指定key的值并将 key 的过期时间设为 seconds 秒SETNX key value 只有在 key 不存在时设置 key 的值 哈希操作命令 Redis hash 是一个string类型的 field 和 value 的映射表hash特别适合用于存储对象常用命令 HSET key field value 将哈希表 key 中的字段 field 的值设为 valueHGET key field 获取存储在哈希表中指定字段的值HDEL key field 删除存储在哈希表中的指定字段HKEYS key 获取哈希表中所有字段HVALS key 获取哈希表中所有值 列表操作命令 Redis 列表是简单的字符串列表按照插入顺序排序常用命令 LPUSH key value1 [value2] 将一个或多个值插入到列表头部LRANGE key start stop 获取列表指定范围内的元素RPOP key 移除并获取列表最后一个元素LLEN key 获取列表长度BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素 如果列表没有元素会阻塞列表直到等待超 时或发现可弹出元素为止 从左到右的插入 集合操作命令 Redis set 是string类型的无序集合。集合成员是唯一的这就意味着集合中不能出现重复的数据常用命令 SADD key member1 [member2] 向集合添加一个或多个成员SMEMBERS key 返回集合中的所有成员SCARD key 获取集合的成员数SINTER key1 [key2] 返回给定所有集合的交集SUNION key1 [key2] 返回所有给定集合的并集SREM key member1 [member2] 移除集合中一个或多个成员 有序集合操作命令 Redis有序集合是string类型元素的集合且不允许有重复成员。每个元素都会关联一个double类型的分数。常用命令 ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间内的成员ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 incrementZREM key member [member …] 移除有序集合中的一个或多个成员 通用命令 Redis的通用命令是不分数据类型的都可以使用的命令 KEYS pattern 查找所有符合给定模式( pattern)的 keyEXISTS key 检查给定 key 是否存在TYPE key 返回 key 所储存的值的类型DEL key 该命令用于在 key 存在是删除 key 在Java中操作Redis
Redis的Java客户端 Redis 的 Java 客户端很多常用的几种 JedisLettuceSpring Data Redis Spring Data Redis 是 Spring 的一部分对 Redis 底层开发包进行了高度封装。 在 Spring 项目中可以使用Spring Data Redis来简化操作。 Spring Data Redis使用方式 操作步骤 导入Spring Data Redis 的maven坐标配置Redis数据源编写配置类创建RedisTemplate对象通过RedisTemplate对象操作Redis 解释说明 database指定使用Redis的哪个数据库Redis服务启动后默认有16个数据库编号分别是从0到15。 当前配置类不是必须的因为 Spring Boot 框架会自动装配 RedisTemplate 对象但是默认的 key 序列化器为 JdkSerializationRedisSerializer导致我们存到 Redis 中后的数据和原始数据有差别故设置为 StringRedisSerializer 序列化器。 通过RedisTemplate对象操作Redis 1、导入Spring Data Redis 的maven坐标 2、配置数据源 3、 编写配置类创建RedisTemplate对象 package com.sky.config;import lombok.extern.slf4j.Slf4j;
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.serializer.StringRedisSerializer;Configuration
Slf4j
public class RedisConfiguration {Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info(开始创建redis模板类…);RedisTemplate redisTemplate new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);// 设置Key的序列化器默认为JdkSerializationRedisSerializerredisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}4、 通过RedisTemplate对象操作Redis package com.sky.test;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;/*** author 石头* version 1.0/
SpringBootTest
public class SpringDataRedisTest {Autowiredprivate RedisTemplate redisTemplate;Testpublic void testRedisTemplate(){System.out.println(redisTemplate);}
}RedisTemplate 针对大量api进行了归类封装,将同一数据类型的操作封装为对应的Operation接口具体分类如下 • ValueOperations s tring数据操作 • SetOperationsset类型数据操作 • ZSetOperationszset类型数据操作 • HashOperationshash类型的数据操作 • ListOperationslist类型的数据操作 Testpublic void testRedisTemplate(){System.out.println(redisTemplate);//string数据操作ValueOperations valueOperations redisTemplate.opsForValue();//hash类型的数据操作HashOperations hashOperations redisTemplate.opsForHash();//list类型的数据操作ListOperations listOperations redisTemplate.opsForList();//set类型数据操作SetOperations setOperations redisTemplate.opsForSet();//zset类型数据操作ZSetOperations zSetOperations redisTemplate.opsForZSet();} 操作常见类型数据
1). 操作字符串类型数据
/** 操作字符串类型的数据/Testpublic void testString(){// set get setex setnxredisTemplate.opsForValue().set(city,成都);String city (String)redisTemplate.opsForValue().get(city);System.out.println(city);//设置有效期redisTemplate.opsForValue().set(code, 1234,3, TimeUnit.MINUTES);//SETNX key value 只有在 key 不存在时设置 key 的值redisTemplate.opsForValue().setIfAbsent(lock,22);redisTemplate.opsForValue().setIfAbsent(lock,1);} 2). 操作哈希类型数据
/** 操作哈希表中的数据/Testpublic void testHash(){// hset hget hdel hkeys hvalsHashOperations hashOperations redisTemplate.opsForHash();//HSET key field value 将哈希表 key 中的字段 field 的值设为 valuehashOperations.put(ren,name,tom);hashOperations.put(ren,age,18);//HGET key field 获取存储在哈希表中指定字段的值String name (String)hashOperations.get(ren,name);System.out.println(name);//HKEYS key 获取哈希表中所有字段Set keys hashOperations.keys(ren);System.out.println(keys);//HVALS key 获取哈希表中所有值List values hashOperations.values(ren);System.out.println(values);//HDEL key field 删除存储在哈希表中的指定字段hashOperations.delete(ren,name);System.out.println(hashOperations.values(ren));}3). 操作列表类型数据
/** 操作列表类型的数据/Testpublic void testList(){//lpush lrange rpop llenListOperations listOperations redisTemplate.opsForList();//LPUSH key value1 [value2] 将一个或多个值插入到列表头部listOperations.leftPushAll(mylist,a,b,c);listOperations.leftPush(mylist,d);//LRANGE key start stop 获取列表指定范围内的元素List mylist listOperations.range(mylist, 0, -1);System.out.println(mylist);//RPOP key 移除并获取列表最后一个元素listOperations.rightPop(mylist);//LLEN key 获取列表长度Long size listOperations.size(mylist);System.out.println(size);} 4). 操作集合类型数据
/** 操作集合类型的数据/Testpublic void testSet(){//sadd smembers scard sinter sunion sremSetOperations setOperations redisTemplate.opsForSet();//SADD key member1 [member2] 向集合添加一个或多个成员setOperations.add(set1,a,b,c,d);setOperations.add(set2,a,b,x,y);//SMEMBERS key 返回集合中的所有成员Set members setOperations.members(set1);System.out.println(members);//SCARD key 获取集合的成员数Long size setOperations.size(set1);System.out.println(size);//sinterSet intersect setOperations.intersect(set1, set2);System.out.println(intersect);//sunionSet union setOperations.union(set1, set2);System.out.println(union);//sremsetOperations.remove(set1,a,b);} 5). 操作有序集合类型数据
/** 操作有序集合类型的数据/Testpublic void testZset(){//zadd zrange zincrby zremZSetOperations zSetOperations redisTemplate.opsForZSet();//zaddzSetOperations.add(zset1,a,10);zSetOperations.add(zset1,b,12);zSetOperations.add(zset1,c,9);//zrangeSet zset1 zSetOperations.range(zset1, 0, -1);System.out.println(zset1);//zincrby 有序集合中对指定成员的分数加上增量 incrementzSetOperations.incrementScore(zset1,c,10);//zrem 移除有序集合中的一个或多个成员zSetOperations.remove(zset1,a,b);}
6). 通用命令操作 /** 通用命令操作/Testpublic void testCommon(){//keys exists type del//显示所有的keysSet keys redisTemplate.keys();System.out.println(keys);//检查给定 key 是否存在Boolean name redisTemplate.hasKey(name);Boolean set1 redisTemplate.hasKey(set1);// 返回 key 所储存的值的类型for (Object key : keys) {DataType type redisTemplate.type(key);System.out.println(type.name());}// 该命令用于在 key 存在是删除 keyredisTemplate.delete(mylist);}
店铺营业状态设置
需求分析和设计
产品原型
接口设计 接口设计 • 设置营业状态 • 管理端查询营业状态 • 用户端查询营业状态 设置营业状态 管理端查询营业状态 用户端查询营业状态 本项目约定 管理端 发出的请求统一使用 /admin 作为前缀用户端 发出的请求统一使用 /user 作为前缀 营业状态数据存储方式基于Redis的字符串来进行存储 约定1表示营业 0表示打烊 代码开发
注意用户端和服务端的Controller不要重名因为sprintboot的bean对象默认是小写名
解决Controller的bean对象重新命名
管理端 查询营业状态 设置营业状态
package com.sky.controller.admin;import com.sky.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.;/** author 石头* version 1.0/
RestController(adminShopController)
Slf4j
RequestMapping(/admin/shop)
Api(tags 商家店铺相关的接口)
public class ShopController {public static final String KEY SHOP_STATUS;Autowiredprivate RedisTemplate redisTemplate;/** 设置店铺营业状态* param status* return/PutMapping(/{status})ApiOperation(商家设置店铺营业状态)public ResultString setStatus(PathVariable Integer status) {log.info(设置营业状态为{}, status 1 ? 营业中 : 打烊中);redisTemplate.opsForValue().set(KEY, status);return Result.success();}/** 查询店铺营业状态** return/GetMapping(/status)ApiOperation(商家查询店铺营业状态)public ResultInteger getStatus() {Integer status (Integer) redisTemplate.opsForValue().get(KEY);log.info(查询店铺营业状态为{}, status 1 ? 营业中 : 打烊中);return Result.success(status);}
}用户端查询营业状态
package com.sky.controller.user;import com.sky.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.;/*** author 石头* version 1.0/RestController(userShopController)
Slf4j
RequestMapping(/user/shop)
Api(tags 用户店铺相关的接口)
public class ShopController {public static final String KEY SHOP_STATUS;Autowiredprivate RedisTemplate redisTemplate;/** 查询店铺营业状态** return/GetMapping(/status)ApiOperation(用户查询店铺营业状态)public ResultInteger getStatus() {Integer status (Integer) redisTemplate.opsForValue().get(KEY);log.info(查询店铺营业状态为{}, status 1 ? 营业中 : 打烊中);return Result.success(status);}
}功能测试
在上述接口文档测试中管理端和用户端的接口放在一起不方便区分 接下来我们要实现管理端和用户端接口进行区分。 在 WebMvcConfiguration.java 中 分别扫描 “com.sky.controller.admin” 和 “com.sky.controller.user” 这两个包。 /** 通过knife4j生成接口文档* return*/Beanpublic Docket docket1() {log.info(准备生成接口文档….);ApiInfo apiInfo new ApiInfoBuilder().title(苍穹外卖项目接口文档).version(2.0).description(苍穹外卖项目接口文档).build();Docket docket new Docket(DocumentationType.SWAGGER_2).groupName(管理端接口).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage(com.sky.controller.admin)).paths(PathSelectors.any()).build();return docket;}Beanpublic Docket docket2() {log.info(准备生成接口文档….);ApiInfo apiInfo new ApiInfoBuilder().title(苍穹外卖项目接口文档).version(2.0).description(苍穹外卖项目接口文档).build();Docket docket new Docket(DocumentationType.SWAGGER_2).groupName(用户端接口).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage(com.sky.controller.user)).paths(PathSelectors.any()).build();return docket;} 上一节
套餐管理模块实战day04-CSDN博客
下一节
微信登录、商品浏览day06上-CSDN博客
- 上一篇: 企业网站效果图互联网公司花名大全男
- 下一篇: 企业网站宣传建设店名logo设计在线生成






