Redis 基本操作
之前学了数据库,比如MySQL, PostgreSQL,这种全都是关系型数据库,它们都存在显著的问题,那就是按照木桶效应,速度最慢的硬盘成为了提升性能的瓶颈。而Redis等非关系型数据库(NoSQL)则是一种解决方案,它可以将数据存储在内存中,这样就可以提升性能。
基本特点
Redis是一个开源的高性能键值存储数据库(也就是采用Key: Value的键值对形式存储),它支持多种数据结构,包括字符串、哈希、列表、集合、有序集合、位图和 HyperLogLog。Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis支持主从复制,可以实现读写分离,提高系统的可用性。Redis支持事务,可以一次执行多个命令,减少客户端与服务器之间的通信次数,提高性能。
有一个非常重要的,就是Redis是Case-Sensitive的,也就是说,Redis对大小写敏感,所以你不能把一个Key设置成”foo”,然后再设置成”Foo”,否则会导致查询不到数据。
持久化
由于Redis是存储在内存当中的,为了数据的持久化,我们还是需要一种方式存回到硬盘这种持久化存储器当中。Redis提供了两种持久化方式,第一种是RDB持久化,它会将内存中的数据以快照的方式,按照固定的时间间隔(如果修改操作越频繁,则该时间间隔越短)写入磁盘,恢复时会恢复到最近一次快照的状态。第二种是AOF持久化,它会将内存中的数据以日志的形式写入磁盘,恢复时会根据日志中的指令来恢复数据。
还可以通过save
命令,手动触发RDB持久化,也可以通过bgsave
命令,后台异步执行RDB持久化。
主从复制
Redis支持主从复制,一个主节点(Master)可以对应多个从节点(Slave),主节点会将自己的数据异步地更新到从节点,从节点可以实现读写分离,提高系统的可用性。
哨兵模式
Redis的哨兵模式是一种高可用性的模式,它可以实现Redis的主从复制,并提供监控、通知和自动故障转移等功能。
安装配置就不讲了,提一点Redis只能安装在Linux环境下,Windows环境下只能作为客户端使用。
基本操作
启动
-
启动Redis服务
-
启动Redis命令行客户端
基本增删查改
-
增
-
删
-
查
-
批量操作(在操作之前加个M前缀)
列表操作(List)
-
增
-
删
-
查
哈希操作(Hash)
Redis的哈希表是String类型的field和value的映射表,它是一种非常灵活的数据结构。你可以理解为一个string对应一个map,field是key,value是value。
-
增
-
删
-
查
集合操作(Set)
-
增/删
-
查
有序集合操作(Sorted Set)(按照score升序排序)
-
增
-
删
-
查
位图操作(Bitmap)
value全为0或1的bitmap,可以用来做一些高效的位运算操作。
-
增
-
删
-
查
事务(Transaction)
Redis事务提供了一种将多个命令操作在一个事务中执行的机制。在关系型数据库种,事务中的命令要么全部执行成功,要么全部执行失败。但是Redis不一样,事务中某条命令失败,不会影响其他命令的执行。
-
开启事务
-
命令入队
-
执行事务
-
取消事务
订阅发布(Pub/Sub)
-
订阅
-
发布
-
取消订阅
Stream操作(Stream)
-
创建
-
读
-
删
HyperLogLog操作(HyperLogLog)
有点像布隆过滤器,有效率和内存的优势,但是需要牺牲一定的准确性。
-
增
-
删
-
查