redis序列化及各种序列化情况划分
序列化基本 默认使用的是jdk序列化 会使字符串转义 在实际开发中,当我们要往redis中存对象时,都要进行序列化的。 当然,如果我们把对象给转换json字符串,此时存储的相当于是字符串。不序列化并不影响正常运行 但是,通常我们都要把我们创建的对象给序列化。 假如我们不序列化,存储对象 在实际开发中我们可能使用json去转换,我们还不想使用jdk序列化(默认的是jdk序
Redis 2023年07月11日 156
序列化基本 默认使用的是jdk序列化 会使字符串转义 在实际开发中,当我们要往redis中存对象时,都要进行序列化的。 当然,如果我们把对象给转换json字符串,此时存储的相当于是字符串。不序列化并不影响正常运行 但是,通常我们都要把我们创建的对象给序列化。 假如我们不序列化,存储对象 在实际开发中我们可能使用json去转换,我们还不想使用jdk序列化(默认的是jdk序
Redis 2023年07月11日 156
前言 对redis的使用,想必做过后端开发的同学都不陌生,redis为key/value非关系型数据库,使用起来简单高效,支持的数据类型也比较丰富,几乎在日常开发中没有不涉及的; 但如果对redis使用比较深入的话,还需要综合考虑多方面的因素,比如使用redis时如何兼具高效与性能,如何设计合理的key以达到存取时最高效等等,这都是应该考虑的,下面结合redis中一个比较简单但也容易的问题,关
Redis 2023年07月11日 151
明明做了数据删除,数据量已经不大了,为什么使用 top 命令查看时,还会发现 Redis 占用了很多内存呢?实际上,这是因为,当数据删除后,Redis 释放的内存空间会由内存分配器管理,并不会立即返回给操作系统。 Redis 释放的内存空间可能并不是连续的,那么,这些不连续的内存空间很有可能处于一种闲置的状态。这就会导致一个问题:虽然有空闲空间,Redis 却无法用来保存数据,不仅会减少 Red
Redis 2023年07月11日 179
缓冲区(buffer),是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。 一、Redis缓冲区溢出影响 在Redis中,主要有三个场景用到了缓冲区的概念。 在客户端和服务器端之间进行通信时,用来暂存客户端发送的命令数据,或者是服务器端返回给客户端的数据结果 在主从节点间进行数据同步时,Redis使用缓冲区来
Redis 2023年07月11日 170
1 第一个坑:错误释放锁时机 1.1. 发现问题 分析以下代码存在什么问题: // 分布式锁服务 public interface RedisLockService { // 获取锁 public boolean getLock(String key); // 释放锁 public boolean releaseLock(String key)
Redis 2023年07月11日 149
1. 什么是Redis?它主要用来什么的? Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读
Redis 2023年07月11日 1476
一、前言 为什么需要分布式锁? 在我们的日常开发中,一个进程中当多线程的去竞争某一资源的时候,我们通常会用一把锁来保证只有一个线程获取到资源。如加上synchronize关键字或ReentrantLock锁等操作。 那么,如果是多个进程相互竞争一个资源,如何保证资源只会被一个操作者持有呢? 例如:微服务的架构下,多个应用服务要同时对同一条数据做修改,那么要确保数据的正确性,就只能有一个应
Redis 2023年07月10日 178
Redis 2023年07月09日 169