一
redis可以说是单线程,也可以说是多线程。
单线程:主要是redis的网络io,键值对读写,都是由一个线程完成的,比如说执行执行一些set命令,这些都是由单线程按照顺序完成的;
多线程:redis的一些其他扩展功能,比如持久化rdb aof,还有一些异步删除的功能,集群数据同步......,都是由额外的线程去操作的,redis的工作线程是单线程,但是对于整个redis来说,redis就是一个多线程。
redis不仅是一个缓存,它是一个分布式数据储存》》》》》
二
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
大多数时候我们是基于linux使用的
redis默认不是后台启动需要修改配置
16个数据库为:DB 0~DB 15
默认使用DB 0 ,可以使用select n
key * :查看数据库中的所有key
flushdb:清空当前数据库中的键值
flushall:清空所有数据库的键值
三
五大数据类型 (String set list zst has)
redis无论是什么类型都是以key-values的形式存在
四 三种特殊数据类型
Geospatial(地理位置) Hyperloglog(基数统计) BitMaps(位图)
五、事务
redis事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,执行过程中按照顺序执行
一次性,顺序性,排他性,执行一些列的命令
redis单条命令是保持原子性,但是事务不保证原子性
redis事务没有隔离级别的概念
所有的命令在事务中,并没有被直接执行,只有发起执行命令才会被执行!execRedis
监控
悲观锁:{很悲观,认为什么时候都会出现问题,无论做什么都会加锁}
乐观锁:{
很乐观,认为什么时候都不会出现问题,所以不会上锁!更新数据的时候去判断一下,在此期间是否有人修改过这个数据获取version更新的时候比较version
}
六 Jedis
Java来操作Redis,Jedis是Redis官方推荐使用的Java连接redis的客户端