大家好~ 你们看这个小哪吒可爱嘛~ 嘻嘻嘻嘻。小哪吒跟今天讲的redis有什么关系呢?没有关系。
Redis入门 |
如果对Redis不了解的,可以先看看下面这些博客,这些博客是我去年写的,挺适合用于入门。
说说NoSQL中的Redis
【Redis】在java中的使用-存取string类型
【Redis】基础问题答疑
【Redis】连接池的使用
Redis的特点 |
(1)5种数据结构
redis支持多种数据结构:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)等。其中常用的是string、list。今天我们说说list的常用命令。
列表类型是有序的,是可重复的,我们可以通过访问下标来获取某个元素。对其的操作和对list集合的操作的思想是一致的。
// 在右边插入元素,结果为(person,a b c)
rpush person a b c
// 删除指定元素b,1代表从左到右,最多删除1个元素,此处可取的值为:
// 正数(从左到右)、负数(从右到左)、0(删除所有)
lrem person 1 b
// 获取指定元素b
lindex person 1
// 修改指定元素b为p
lset person 1 p
(2)基于内存
我们知道,像mysql这些关系型数据库是将数据存储在磁盘上的,速度慢,但是稳定。
像redis这些非关系型数据库是将数据存储在内存上的,速度快,但是不稳定,服务器一宕机,内存里的数据就没了。
还好redis配置了可持久化,可将内存中的数据定期存放到磁盘上去。
因为redis是基于内存的,所以其速度快,1s可进行10万次读写。
(3) 单线程
redis使用了单线程架构,预防了多线程可能产生的竞争问题。但也正是因为使用了单线程,其一旦发生阻塞,就将是致命的。
redis为什么选择使用单线程?redis的主要特点就是快,使用单线程能避免上下文切换等损耗。
(4)key-value
和map集合一样,redis集合的组织方式也是key-value型的。
持久化 |
redis提供了2种持久化的方式:RDB和AOF。持久化就是将内存里的数据同步到磁盘里,进行“持久”保存。
RDB
RDB持久化是把当前线程数据生成快照保存到磁盘的过程。
- 优点:
产生的文件紧凑压缩比更高,因此恢复速度更快。
- 缺点:
开销较大,且无法做到实时持久化。
- 适用场景:
一般用于数据冷备和复制传输。
啥叫数据冷热备?热备指为了保证服务正常运行,用两台服务器作为服务机器,一台用于实际数据库操作应用,另一台用于从前者获取数据以保持数据一致。如果当前服务器宕机,有另一台继续提供服务。
冷备是指在数据库关闭后,进行备份。
AOF(常用)
AOF持久化是以独立日志的方式记录每次写命令,重启时再重新执行一遍此命令,从而恢复数据。其工作流程如下:
(1)所有的写命令会追加到aof缓冲区。
(2)aof缓冲区根据对应的策略向磁盘做同步操作。
(3)随着aof文件越来越大,需要定期对aof文件进行重写,以达到压缩的目的。
(4)当redis服务器重启时,可以加载aof文件进行数据恢复。