- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 8、Redis分布式锁
想要实现分布式锁,Redis必须要有互斥能力,比如setnx命令,即如果key不存在,才会设置它的值。客户端1:客户端2:此时,加锁成功的客户端就可以去操作共享资源。操作完成后,还要及时释放锁,给后来者让出操作共享资源的机会,这里我们可以使用del命令删除这个key即可。问题:当客户端1命到锁后,如果程序处理业务逻辑异常,没有及时释放锁或是进程挂了,没机会释放锁,那么就会造成死锁,客户端1一直占用这个锁,其它客户端就永远拿不到锁了。如何避免上述的死锁呢?可以给这个key设置一个过期时间,假设
2021-09-26 21:11:34
573
原创 7、Redis持久化(RDB、AOF)、scan操作
Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写住磁盘,可以有效避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。一、RDBRDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。1、触发机制手动触发可以用save和bgsave命令save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。bgsave命令:Redis进
2021-09-24 09:22:57
383
原创 6、Redis高级特性(发布和订阅、Stream)
一、发布和订阅1、定义Redis提供了“发布、订阅”模式的消息机制,其中消息订阅者与发布者不直接通信,发布者向指定的频道(channel)发布消息,订阅该频道的每个客户端都可以接收到消息2、操作命令发布消息publish channel message返回值是热闹收到信息的订阅者数量订阅消息subscribe channel [channel ...]订阅者可以订阅一个或多个频道,如果此时另一个客户端发布一条消息,当前订阅者客户端会收到消息。如果有多个客户端同时订阅了同一个频道,
2021-09-23 09:50:13
911
原创 5、Redis高级特性(慢查询、Pipeline、事务、Lua)
一、慢查询慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis 也提供了类似的功能。Redis客户端执行一条命令分为4个部分:1)发送命令 2)命令排队 3)命令执行 4)返回结果慢查询只统计步骤3的时间,所以没有慢查询并不代表客户端没有超时问题。1、慢查询配置Redis提供了 slowlog-log-slower-than 和 slowlog-max-len 配置slowlog-log-s
2021-09-21 21:31:03
592
原创 4、Redis高级数据结构(Bitmaps、HyperLogLog、GEO)
一、Bitmaps1、BitmapsBitmaps 本身不是一种数据结构,实际上它就是字符串,但是它可以对字符 串的位进行操作。Bitmaps 单独提供了一套命令,所以在 Redis中使用 Bitmaps和使用字符串的 方法不太相同。可以把 Bitmaps 想象成一个以位为单位的数组,数组的每个单元只能存储 0 和 1,数组的下标在 Bitmaps 中叫做偏移量。(1)setbit设置值设置键的第offset个位的值(从0算起)setbit key offset value假设现在有20个用
2021-09-21 12:25:19
480
原创 3、Redis与Java的集成
3、Redis与Java的集成1、Maven配置<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.6.3</version></dependency>2、application.properties配置文件# Redis服务器地址redis.host=1.15.106.
2021-09-20 11:19:32
353
原创 2、Redis的常用命令
一、Redis的全局命令操作1、查看所有键keys *-- 也可以模糊搜索查询,但一般不推存keys s*2、查看键总数dbsize3、检查键是否存在exists key4、删除键,返回删除的条数del key5、键过期返回剩余的过期时间:-1表示没有设置过期,-2表示已过期,正数表示还剩余的过期时间(秒)expire key seconds-- 设置时间戳以后过期expireat key 时间戳-- 查看还剩多久过期ttl key6、查看键的数据结构类型ty
2021-09-20 10:14:13
13361
1
原创 1、Redis的安装和基础
一、Liunx centos7下安装Redis-6.2.4版本1、下载redis下载地址:https://redis.io/download比如将redis安装到/usr/local/soft目录cd /usr/local/softwget https://download.redis.io/releases/redis-6.2.4.tar.gz2、解压压缩包tar -zxvf redis-6.2.4.tar.gz 3、检查gcc版本是否低于5,如果是则先升级sudo yum ins
2021-09-19 13:10:33
290
原创 Java将一个对象中非空的字段覆盖到另一个对象中
前缀:在开发中我们现在将一个对象中的非空字段覆盖到另一个对象中,虽然BeanUtils.copyProperties()和PropertyUtils.copyProperties()方法也可以实现,但是它是将整个对象完全复制到另一个对象里,与我们预期的不一样,所以这里可以参考一下如下的代码:具体方法:/** * 功能说明: 只复制source对象的非空属性到target对象上 * @param source * @param target * @throws B
2021-09-16 19:03:31
2645
原创 通用Excel导入
1、引入maven<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>4.1.2</version> </dependency> <dependency>
2021-09-08 17:52:52
252
原创 Servlet的基础知识总结
文章目录1、Servlet技术的核心是Servlet,Servlet API有4个jar包2、Servlet的实现方式(1)实现Servlet接口来开发Servlet程序(2)扩展GenericServlet实现Servlet程序(3)扩展HttpServlet实现Servlet程序3、Servlet的生命周期4、手写Servlet程序步骤1、继承HttpServlet2、重写doGet()或者doPost()方法3、在web.xml中注册Servlet5、@WebServlet注解的使用1、Servle
2021-09-05 10:04:36
145
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅