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

专门做画册封面的网站网络营销的手段包括

专门做画册封面的网站,网络营销的手段包括,建设银行网站名称怎么写,小公司做网站推广好不好1. Redis入门 1.1 Redis简介 Redis 是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 官网: https://redis.io 中文网: https://www.redis.net.cn/ 主要特点: 基于内存存储,读写性能高…

1. Redis入门

1.1 Redis简介

Redis 是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件

官网: https://redis.io
中文网: https://www.redis.net.cn/

主要特点:

  • 基于内存存储,读写性能高
  • 适合存储热点数据(热点商品、资讯、新闻)
  • 企业应用广泛

Redis 是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到 100000+ 的 QPS(每秒内查询次数)。它存储的 value 类型比较丰富,也被称为结构化的 NoSql 数据库。

NoSql(Not Only SQL),不仅仅是SQL,泛指非关系型数据库。NoSql数据库并不是要取代关系型数据库,而是关系型数据库的补充。

关系型数据库(RDBMS):

  • Mysql
  • Oracle
  • DB2
  • SQLServer

非关系型数据库(NoSql):

  • Redis
  • Mongo db
  • MemCached

1.2 Redis下载与安装

1.2.1 Redis 下载

Redis 安装包分为 windows 版和 Linux 版:

  • Windows版下载地址:https://github.com/microsoftarchive/redis/releases
  • Linux版下载地址: https://download.redis.io/releases/

资料中已提供好的安装包:
在这里插入图片描述

1.2.2 Redis 安装

在 Windows 中安装 Redis (项目中使用)
Redis 的 Windows 版属于绿色软件,直接解压即可使用,解压后目录结构如下:
在这里插入图片描述

1.3 Redis服务启动与停止

1.3.1 服务启动命令

服务启动命令:
redis-server.exe redis.windows.conf

Redis 服务默认端口号为 6379 ,通过快捷键 Ctrl + C 即可停止 Redis 服务
在这里插入图片描述

1.3.2 客户端连接命令

客户端连接命令:
redis-cli.exe

通过 redis-cli.exe 命令默认连接的是本地的 redis 服务,并且使用默认 6379 端口。也可以通过指定如下参数连接:

  • -h ip地址
  • -p 端口号
  • -a 密码(如果需要)

在这里插入图片描述

1.3.3 修改 Redis 配置文件

设置 Redis 服务密码,修改 redis.windows.conf
requirepass 123456
在这里插入图片描述

注意:

  • 修改密码后需要重启 Redis 服务才能生效
  • Redis 配置文件中 # 表示注释

在这里插入图片描述

1.3.4 Redis客户端图形工具

默认提供的客户端连接工具界面不太友好,同时操作也较为麻烦,接下来,引入一个Redis客户端图形工具。

新建连接
在这里插入图片描述

2. Redis数据类型

2.1 五种常用数据类型介绍

Redis 存储的是 key-value 结构的数据,其中 key 是字符串类型,value 有5种常用的数据类型:

  • 字符串 string
  • 哈希 hash
  • 列表 list
  • 集合 set
  • 有序集合 sorted set / zset

2.2 各种数据类型特点

解释说明:

  • 字符串(string):普通字符串,Redis中最简单的数据类型
  • 哈希(hash):也叫散列,类似于Java中的HashMap结构
  • 列表(list):按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList
  • 集合(set):无序集合,没有重复元素,类似于Java中的HashSet
  • 有序集合(sorted set/zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素

在这里插入图片描述

3. Redis常用命令

3.1 字符串操作命令

Redis 字符串类型常用命令:

  • SET key value 设置指定key的值
  • GET key 获取指定key的值
  • SETEX key seconds value 设置指定key的值,并将 key 的过期时间设为 seconds 秒
  • SETNX key value 只有在 key 不存在时设置 key 的值

更多命令可以参考Redis中文网:https://www.redis.net.cn
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 哈希操作命令

Redis hash 是一个string类型的 field 和 value 的映射表,hash特别适合用于存储对象,常用命令:

  • HSET key field value 将哈希表 key 中的字段 field 的值设为 value
  • HGET key field 获取存储在哈希表中指定字段的值
  • HDEL key field 删除存储在哈希表中的指定字段
  • HKEYS key 获取哈希表中所有字段
  • HVALS key 获取哈希表中所有值

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.3 列表操作命令

Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令:

  • LPUSH key value1 [value2] 将一个或多个值插入到列表头部
  • LRANGE key start stop 获取列表指定范围内的元素
  • RPOP key 移除并获取列表最后一个元素
  • LLEN key 获取列表长度
  • BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超 时或发现可弹出元素为止

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 集合操作命令

Redis set 是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,常用命令:

  • SADD key member1 [member2] 向集合添加一个或多个成员
  • SMEMBERS key 返回集合中的所有成员
  • SCARD key 获取集合的成员数
  • SINTER key1 [key2] 返回给定所有集合的交集
  • SUNION key1 [key2] 返回所有给定集合的并集
  • SREM key member1 [member2] 移除集合中一个或多个成员

在这里插入图片描述
在这里插入图片描述

3.5 有序集合操作命令

Redis有序集合是string类型元素的集合,且不允许有重复成员。每个元素都会关联一个double类型的分数。常用命令:

常用命令:

  • ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员
  • ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间内的成员
  • ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
  • ZREM key member [member …] 移除有序集合中的一个或多个成员

在这里插入图片描述
在这里插入图片描述

3.6 通用命令

Redis的通用命令是不分数据类型的,都可以使用的命令:

  • KEYS pattern 查找所有符合给定模式( pattern)的 key
  • EXISTS key 检查给定 key 是否存在
  • TYPE key 返回 key 所储存的值的类型
  • DEL key 该命令用于在 key 存在是删除 key

在这里插入图片描述

4.在 Java 中操作 Redis

4.1 Redis的Java客户端

Redis 的 Java 客户端很多,常用的几种:

  • Jedis
  • Lettuce
  • Spring Data Redis

Spring 对 Redis 客户端进行了整合,提供了 Spring Data Redis,在Spring Boot项目中还提供了对应的Starter,即 spring-boot-starter-data-redis。

4.2 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

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.*;@SpringBootTest
public class SpringDataRedisTest {@Autowiredprivate RedisTemplate redisTemplate;@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();}
}

4.3 操作常见类型数据

1). 操作字符串类型数据

	/*** 操作字符串类型的数据*/@Testpublic void testString(){// set get setex setnxredisTemplate.opsForValue().set("name","小明");String city = (String) redisTemplate.opsForValue().get("name");System.out.println(city);redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);redisTemplate.opsForValue().setIfAbsent("lock","1");redisTemplate.opsForValue().setIfAbsent("lock","2");}

2). 操作哈希类型数据

	/*** 操作哈希类型的数据*/@Testpublic void testHash(){//hset hget hdel hkeys hvalsHashOperations hashOperations = redisTemplate.opsForHash();hashOperations.put("100","name","tom");hashOperations.put("100","age","20");String name = (String) hashOperations.get("100", "name");System.out.println(name);Set keys = hashOperations.keys("100");System.out.println(keys);List values = hashOperations.values("100");System.out.println(values);hashOperations.delete("100","age");}

3). 操作列表类型数据

	/*** 操作列表类型的数据*/@Testpublic void testList(){//lpush lrange rpop llenListOperations listOperations = redisTemplate.opsForList();listOperations.leftPushAll("mylist","a","b","c");listOperations.leftPush("mylist","d");List mylist = listOperations.range("mylist", 0, -1);System.out.println(mylist);listOperations.rightPop("mylist");Long size = listOperations.size("mylist");System.out.println(size);}

4). 操作集合类型数据

	/*** 操作集合类型的数据*/@Testpublic void testSet(){//sadd smembers scard sinter sunion sremSetOperations setOperations = redisTemplate.opsForSet();setOperations.add("set1","a","b","c","d");setOperations.add("set2","a","b","x","y");Set members = setOperations.members("set1");System.out.println(members);Long size = setOperations.size("set1");System.out.println(size);Set intersect = setOperations.intersect("set1", "set2");System.out.println(intersect);Set union = setOperations.union("set1", "set2");System.out.println(union);setOperations.remove("set1","a","b");}

5). 操作有序集合类型数据

	/*** 操作有序集合类型的数据*/@Testpublic void testZset(){//zadd zrange zincrby zremZSetOperations zSetOperations = redisTemplate.opsForZSet();zSetOperations.add("zset1","a",10);zSetOperations.add("zset1","b",12);zSetOperations.add("zset1","c",9);Set zset1 = zSetOperations.range("zset1", 0, -1);System.out.println(zset1);zSetOperations.incrementScore("zset1","c",10);zSetOperations.remove("zset1","a","b");}

6). 通用命令操作

	/*** 通用命令操作*/@Testpublic void testCommon(){//keys exists type delSet keys = redisTemplate.keys("*");System.out.println(keys);Boolean name = redisTemplate.hasKey("name");Boolean set1 = redisTemplate.hasKey("set1");for (Object key : keys) {DataType type = redisTemplate.type(key);System.out.println(type.name());}redisTemplate.delete("mylist");}

5. 店铺营业状态设置

5.1 需求分析和设计

接口设计:

  • 设置营业状态
  • 管理端查询营业状态
  • 用户端查询营业状态

本项目约定:

  • 管理端 发出的请求,统一使用 /admin 作为前缀
  • 用户端 发出的请求,统一使用 /user 作为前缀

营业状态数据存储方式:基于Redis的字符串来进行存储

5.2 代码开发

5.2.1 设置营业状态

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.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController("adminShopController")
@RequestMapping("/admin/shop")
@Api(tags = "店铺相关接口")
@Slf4j
public class ShopController {public static final String KEY = "SHOP_STATUS";@Autowiredprivate RedisTemplate redisTemplate;/*** 设置店铺的营业状态* @param status* @return*/@PutMapping("/{status}")@ApiOperation("设置店铺的营业状态")public Result setStatus(@PathVariable Integer status){log.info("设置店铺的营业状态为:{}",status == 1 ? "营业中" : "打烊中");redisTemplate.opsForValue().set(KEY,status);return Result.success();}
}

5.2.2 管理端查询营业状态

	/*** 获取店铺的营业状态* @return*/@GetMapping("/status")@ApiOperation("获取店铺的营业状态")public Result<Integer> getStatus(){Integer status = (Integer) redisTemplate.opsForValue().get(KEY);log.info("获取到店铺的营业状态为:{}",status == 1 ? "营业中" : "打烊中");return Result.success(status);}

5.2.3 用户端查询营业状态

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.*;@RestController("userShopController")
@RequestMapping("/user/shop")
@Api(tags = "店铺相关接口")
@Slf4j
public class ShopController {public static final String KEY = "SHOP_STATUS";@Autowiredprivate RedisTemplate redisTemplate;/*** 获取店铺的营业状态* @return*/@GetMapping("/status")@ApiOperation("获取店铺的营业状态")public Result<Integer> getStatus(){Integer status = (Integer) redisTemplate.opsForValue().get(KEY);log.info("获取到店铺的营业状态为:{}",status == 1 ? "营业中" : "打烊中");return Result.success(status);}
}

5.3 功能测试

5.3.1 接口分组展示

在这里插入图片描述

接下来,我们要实现管理端和用户端接口进行区分。
在 WebMvcConfiguration.java 中,分别扫描 “com.sky.controller.admin” 和 “com.sky.controller.user” 这两个包。

	@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;}

在这里插入图片描述


文章转载自:
http://tenuirostral.c7623.cn
http://manitou.c7623.cn
http://electroduct.c7623.cn
http://vicinal.c7623.cn
http://sequestrene.c7623.cn
http://parallax.c7623.cn
http://strobilus.c7623.cn
http://especial.c7623.cn
http://agrin.c7623.cn
http://alae.c7623.cn
http://handcart.c7623.cn
http://factualism.c7623.cn
http://feudalize.c7623.cn
http://monotony.c7623.cn
http://ivorist.c7623.cn
http://radiculitis.c7623.cn
http://lamb.c7623.cn
http://hydrophobia.c7623.cn
http://percussion.c7623.cn
http://firstling.c7623.cn
http://sedative.c7623.cn
http://shapeliness.c7623.cn
http://opern.c7623.cn
http://burka.c7623.cn
http://carrucate.c7623.cn
http://tcb.c7623.cn
http://cassocked.c7623.cn
http://papistical.c7623.cn
http://desmosine.c7623.cn
http://subito.c7623.cn
http://oceanid.c7623.cn
http://humanity.c7623.cn
http://kymric.c7623.cn
http://inhalational.c7623.cn
http://balsamroot.c7623.cn
http://percolator.c7623.cn
http://code.c7623.cn
http://brize.c7623.cn
http://biflagellate.c7623.cn
http://unprotestantize.c7623.cn
http://laptop.c7623.cn
http://autocritical.c7623.cn
http://forget.c7623.cn
http://illumine.c7623.cn
http://comstockery.c7623.cn
http://frontlessness.c7623.cn
http://covenantor.c7623.cn
http://placed.c7623.cn
http://degradability.c7623.cn
http://bumpily.c7623.cn
http://procuratory.c7623.cn
http://cart.c7623.cn
http://novitiate.c7623.cn
http://hypocrinism.c7623.cn
http://pertussis.c7623.cn
http://tinkal.c7623.cn
http://ammonium.c7623.cn
http://cine.c7623.cn
http://precedable.c7623.cn
http://dermopteran.c7623.cn
http://palsied.c7623.cn
http://stripline.c7623.cn
http://gilthead.c7623.cn
http://saditty.c7623.cn
http://auk.c7623.cn
http://liza.c7623.cn
http://naphthene.c7623.cn
http://joyously.c7623.cn
http://decarbonize.c7623.cn
http://nonresistant.c7623.cn
http://primness.c7623.cn
http://autoinjector.c7623.cn
http://maple.c7623.cn
http://pbp.c7623.cn
http://liaison.c7623.cn
http://foothold.c7623.cn
http://xenon.c7623.cn
http://trifling.c7623.cn
http://digestive.c7623.cn
http://armill.c7623.cn
http://cathedratic.c7623.cn
http://flexional.c7623.cn
http://gratuity.c7623.cn
http://untenanted.c7623.cn
http://coxless.c7623.cn
http://amnionic.c7623.cn
http://nucha.c7623.cn
http://pitpat.c7623.cn
http://perspicacious.c7623.cn
http://boredom.c7623.cn
http://fiftyfold.c7623.cn
http://xylonite.c7623.cn
http://requisition.c7623.cn
http://telegraphese.c7623.cn
http://kelantan.c7623.cn
http://cleanup.c7623.cn
http://nephritic.c7623.cn
http://epiphytology.c7623.cn
http://programmer.c7623.cn
http://transplant.c7623.cn
http://www.zhongyajixie.com/news/56359.html

相关文章:

  • 优化大师最新版本求职seo
  • 公司官方网站建设网络网站推广优化
  • 淘宝客建网站西安网站seo排名优化
  • 求个网站靠谱的长春网站开发
  • 男女做那个网站动态图广告推广方式
  • 佛山网站建设eblike线上营销手段
  • 服装服饰东莞网站建设网络推广网址
  • 网站推广策划案哪里有软文广告发稿
  • 免费自助建站哪个好软文营销策划
  • 网站在线客服 源码wordpress
  • 宁陵县网站seo深圳seo排名
  • 网站怎么做访客收藏链接公司网站设计定制
  • 全国拿货最便宜的网站公众号推广方案
  • 郑州世界工厂网seo兼职招聘
  • 最近国语视频在线观看免费播放seo优化快排
  • 怎样给装修公司做网站百度问一问客服人工在线咨询
  • 手机网站分类菜单虞城seo代理地址
  • 永州冷水滩网站建设国家最新新闻
  • 不限空间的免费网站宁波seo公司网站推广
  • 做网站 用什么建站软件好营销软文怎么写
  • 男女的做那个视频网站seo常规优化
  • 国外可以做会员网站的网站西安seo优化培训
  • 品牌网站开发动态模块外链免费发布平台
  • 注册一个网站需要多少钱长沙整合推广
  • 昆明网站做的好的公司中超最新积分榜
  • 一个地址能注册几个公司优化设计六年级上册数学答案
  • 网站关键词没有指数今日头条seo
  • 做网站 用什么语言好崇左seo
  • 微商城分销平台免费神马搜索seo优化排名
  • 鼓楼徐州网站开发查数据的网站有哪些