首页 > 编程知识 正文

redis集群启动命令,启动redis命令

时间:2023-05-03 23:23:53 阅读:19980 作者:2741

一、使用工具的后端开发工具: IntelliJ IDEA 2020.3前端开发工具: Microsoft VS Code 1.50.1数据库工具: Navicat Premium 15.0.20Redis可视化因为每个部分(包括帐户和)都创建了一个模块,所以词典外部被命名为basic-dictionary,分为两个模块: dictionary-api和dictionary-biz。

在——api中加入词典表实体bean和vo;

——biz包含redis方法和开始将数据加载到字典表中、添加更改以及使用redis的后端代码。

下图为已完成的目录结构,启动类DictionaryBizApplication

三. nacos配置在dictionary-biz的资源中创建bootstrap.yml文件以配置nacos的ip端口和命名空间id

spring : profiles 3360 active : dev application : name : UIP-dictionary-biz cloud : nacos : config 3360 server-a acactional amespace:命名空间id组:组名称填充部分是命名空间id

在命名空间中创建词典相关设置yaml

ataid:UIP-dictionary-biz-dev.YAML

组:与配置文件中的组名称相同

配置内容:

##端口号server :端口: 7707 # # 修复Nacos安全风险问题nacos : core : auth : enable : useragentauthwhite : false spring : cloud : nacos 3: discovery 3: cloud.nacos.config.server-addr } namespace 3360 $ { spring.cloud.nacos.config.namespace } group 330数据源: type : com.Alibaba.druid.pool.druiddatasourcedriver-class-name 3360 com.MySQL.JDBC.druid use unicode=trueddqd=utf-8服务器时间区域=Asia/shanghaiautoreconnect=trueusessl=false username 3360用户名password 333333330 host: redis服务器IP port : 6379密码my batis-plus : configuration 3360 map-underscore-to-camel-case 3360 由stdoutimplglobal-config : db-config : logic-delete-field 3360 deleted #全局逻辑删除的实体字段名称(配置后,步骤2 ) 逻辑删除值(默认值为1 ) logic-not-delete-value : ' n ' #逻辑未删除值(默认值为0 ) 4、创建实体1、创建实体1

在dictionary-api的entity文件夹中创建表实体

@ data @ equalsandhashcode (call super=true ) tablename ) UIP_dictionary ' (访问) chain=true ) )。 publicclassuipdictionaryextendsbaseentityuipdictionary { privatestaticfinallongserialversionuid=1l; @tablefield('name ) ) apimodelproperty ) ) value='词典名称')专用字符串名称; @tablefield(sort_code ) ) apimodelproperty ) value='同级排序代码')专用字符串sortc

ode; @TableField("value") @ApiModelProperty(value = "字典值") private String value; @TableField("type_code") @ApiModelProperty(value = "字典类型代码") private String typeCode; @TableField("status") @ApiModelProperty(value = "字典状态 0-已启用,1-已禁用") private String status; @TableField("defaulted") @ApiModelProperty(value = "默认标志 Y-已默认,N-未默认") private String defaulted; @TableField("remark") @ApiModelProperty(value = "菜单描述") private String remark;}

继承的BaseEntity中将id、乐观锁等全部表共同字典提取出来。

@Data@EqualsAndHashCode(callSuper=true)@ApiModelpublic abstract class BaseEntity<T extends Model<?>> extends Model<T> implements Serializable { private static final long serialVersionUID = 1L; @JsonSerialize(using= ToStringSerializer.class) @TableId(value = "id", type = IdType.ASSIGN_ID) @ApiModelProperty(value = "唯一标识") public Long id; @Version @ApiModelProperty(value = "乐观锁") private Long revision; @TableField(value = "created_by", fill = FieldFill.INSERT) @ApiModelProperty(value = "创建人") private String createdBy; @TableField(value = "created_time", fill = FieldFill.INSERT) @ApiModelProperty(value = "创建时间") private LocalDateTime createdTime; @TableField(value = "updated_by", fill = FieldFill.INSERT_UPDATE) @ApiModelProperty(value = "更新人") private String updatedBy; @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE) @ApiModelProperty(value = "更新时间") private LocalDateTime updatedTime;}

※注意:由于id字段使用的分布式id类型IdType.ASSIGN_ID,保存数据时自动生成19位纯数字,数据库字段是bigint类型,在前端获取时由于精度不同会导致最后3位数据全部是000,因此在所有id相关字段加上此注解@JsonSerialize(using= ToStringSerializer.class)

2、创建vo

在dictionary-api的vo文件夹中创建RedisDictionariesVO,此文件只用于前台查询redis数据使用

@Data@NoArgsConstructorpublic class RedisDictionariesVO implements Serializable { //实现Serializable 否则Application启动时redis加载数据会报错,此VO无法序列化 @ApiModelProperty(value = "字典名称") private String name; @ApiModelProperty(value = "字典值") private String value;}

关于实现Serializable的问题,我在开发的过程中,如果没加这个实现会导致启动服务时报错,而其他同事开发别的redis服务时没有添加也可启动。

五、创建启动

在dictionary-biz中的component文件夹中创建InitDictionariesCacheRunner

@Component@AllArgsConstructor@Slf4jpublic class InitDictionariesCacheRunner implements CommandLineRunner { private final RedisTemplate redisTemplate; private final DictionaryBizService dictionaryBizService; @Override public void run(String... args) throws Exception { redisTemplate.delete(BasicConstants.DICTIONARIES_KEY); //查询所有字典数据 List<UipDictionary> uipDictionaries = dictionaryBizService.list(); //定义字典type数组 List<String> typeCodeList = uipDictionaries.stream().map(UipDictionary::getTypeCode).collect(Collectors.toList()); //遍历type_code数组 typeCodeList.forEach(str->{ //根据type_code查询对应的name和value List<RedisDictionariesVO> listmap = dictionaryBizService.queryByTypeCode(str); Map<String, List<RedisDictionariesVO>> dictionariesMap = new TreeMap<>(); Optional.ofNullable(listmap).orElse(new ArrayList<>()).forEach(uipDictionary -> { dictionariesMap.put(str, listmap); }); redisTemplate.opsForHash().putAll(BasicConstants.DICTIONARIES_KEY, dictionariesMap); }); }}

BasicConstants.DICTIONARIES_KEY是自定义的内容

/** * Redis缓存字典规则Key(Key-Value) */ String DICTIONARIES_KEY = "basic:dictionaries";

至此,启动Application后即可在RDM中查看是否将字典表中已有数据加载。
key:字典类型,表字段type_code
value:字典code和value的list集合。

 
  
内容仅供参考,一切请与实际开发为准。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。