Redis过期删除策略和内存淘汰策略
过期删除策略设置过期时间 只对key设置 1234expire key n // key在n秒后过期pexpire key n // key在n毫秒后过期expireat key n // key在时间戳n秒的时刻过期pexpireat key n // key在时间戳n毫秒的时刻过期 创建key的时候设置 123set key value ex n // 创建key,并且key在n秒后过期set key value px n // 创建key,并且key在n毫秒后过期set key n value // 创建key,并且key在时间戳n秒的时刻过期 查看某个key的存活时间 1ttl key 判定key是否过期1234typedef struct redisDb { dict *dict; /* 数据库键空间,存放着所有的键值对 */ dict *expires; /* 键的过期时间 */ .... } redisDb; 过期字典数据结构: key 是一个指针,指向某个键对象 value 是一个 long long...
Redis持久化
Redis的持久化方式有哪些Redis持久化有两种方式:RDB(Redis DataBase)和AOF(Append Only...
Redis线程模型
Redis线程是单线程还是多线程Redis核心处理一直都是单线程,但是其他处理模块也会有一些多线程、多进程的功能 网络I/O解包从6.0开始是多线程 某些异步流程从4.0开始用的是多进程,比如UNLIKE、FLUSHALL ASYNC等非阻塞的删除操作 Redis为什么用单线程做核心处理 首先如果引用多线程,主要是希望利用多核的性能,但是Redis是内存k-v存储,一般不会很慢。真正影响Redis性能的是网络I/O 其次多线程的上下文切换、同步机制开销等成本,会影响Redis的性能 Redis单线程性能如何性能很好,普通机器1s10多万的读性能,几万的写性能 redis-benchmark测试命令: 1redis-benchmark -h 127.0.0.1 -p 6379 -t set,get -n 10000...
从Java线程池到阻塞队列
为什么要用线程池 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行 方便管理线程:线程是稀缺资源,如果无条件地创建,不仅会消耗资源,还会降低线程的稳定性,使用线程池可以统一分配、调优和监考 线程池的核心参数 默认线程工厂(省略参数)创建线程池: ThreadPoolExecutor继承自AbstractExecutorService,AbstractExecutorService实现了ExecutorService接口 123456public class Client { public static void main(String[] args) { ThreadPoolExecutor Pool = new ThreadPoolExecutor(8, 8, 2, TimeUnit.SECONDS, new ArrayBlockingQueue<>(4),new...
Redis数据结构和数据类型
基本结构在Redis中有一个核心的对象叫做redisObject...
JVM
The Java Virtual Machine (JVM) is a crucial component of the Java programming language. It is an abstract computing machine that enables a computer to run Java programs. The JVM is platform-independent, meaning it can run on any device or operating system that has a compatible JVM...
Java常用设计模式
单例模式单例模式就是: 在程序运行期间, 某些类有且最多只有一个实例对象 饿汉模式(静态常量)饥饿模式又称为饿汉模式, 指的是JVM在加载类的时候就完成类对象的创建 123456789101112//饿汉式(静态常量)public class Singleton1 { //构造器私有化,外部不能new private Singleton1() {} //本类创建对象实例 private final static Singleton1 instance = new Singleton1(); //提供一个公有的静态方法,返回对象实例 public static Singleton1 getInstance() { return instance; }} 优点:JVM层面的线程安全。JVM在加载这个类的时候就会对它进行初始化,...
HashTable和HashMap的区别
区别1、HashMap是线程不安全的,HashTable是线程安全的 HashMap:Fail-fast 机制。表示快速失败,在集合遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModificationException异常,从而导致遍历失败,像这种情况:定义一个Map集合,使用Iterator迭代器进行数据遍历,在遍历过程中,对集合数据做变更时,就会发生Fail-fast。java.util包下的集合类都是快速失败机制的,...