redis数据类型
1、字符串
2、哈希/散列码:可以存放 2^32 - 1个哈希码
3、列表:可以存放 2^32 - 1个列表元素
4、集合:可以存放 2^32 - 1个集合元素
5、可排序集合
Redis特点
1、将数据完全保存在内存之中,仅使用磁盘进行持久化
2、与其他键值存储结构相比,Redis有相对丰富的存储类型
3、Redis可以将任意的数据复制到从机中
Redis连接到远程的服务器
redis-cli -h host -p port -a password
redis的持久化
RDB:在指定的时间间隔生成数据集的时间点快照
AOF:持久化记录服务器执行的所有写操作命令,并在服务器启东市,通过重新执行这些命令来还原数据集。AOF文件中的命令全部以Redis协议的格式来保存
优点
RDB:
1、适合进行备份
2、非常适合用于灾难恢复
3、恢复大数据时比AOF要快
AOF
1、使得Redis非常耐久,AOF会使用fsync来进行写入,而fsync的默认设置为每1秒进行1次,那么就会最多丢失1秒钟的数据
2、AOF是一个进行追加操作的日志文件,那么在写入时不需要seek而是直接写到末尾
3、Redis会因为AOF文件体积过大时,自动地在后台对AOF进行重写
4、AOF文件有序地保存了对数据库执行的所有写入操作,所以即使将数据库中的数据全部删除,比如执行了FLUSHALL命令,那么只要停止服务器,移除AOF文件末尾的FLUSHALL的指令,重启服务器,文件便回到了FLUSHALL执行前的状态了
缺点
RDB:
1、如果服务器宕机,那么会有较大数据量的数据遗失
2、因为RDB的保存会fork一个进程来进行数据的持久化,这样的做法非常耗时
AOF
1、体积相比于RDB要更大一些
2、使用的fsync策略的AOF会比RDB更慢一些
如何进行选择
一般我们会同时选择RDB和AOF
事务
事务可以执行多个命令,并且带有一下两个重要的保证
1、所有命令的执行时序列化的,就是说按照顺序进行执行
2、事务是原子操作,要么全部执行,要么全部不执行
事务的执行是包在MULTI和EXEC之间的,也就是说假如在EXEC调用之前断线了,那么事务中所有的操作都不会发生,假如在执行的过程中发生了错误,比如执行了失败的命令,那么事务也会取消
MULTI:用于开启一个事务,总是返回OK
DISCARD:对MULTI和DISCARD之间的操作进行取消
WATCH:通过对键进行加锁来进行确保只有一个客户端对这个键进行访问
Redis不支持回滚
发布和订阅
发布和订阅模式在实现中,发送者并不是将信息直接发送给特定的接收者,而是将信息发送给频道,然后由频道将信息转发给所有的对这个信息感兴趣的订阅者
可以使用subcribe命令来进行订阅频道,比如
subcribe channel1 channel2
那么另一个客户端可以使用publish channel1 "message" 来向订阅了channel1的客户进行发布消息了
还可以利用正则表达式进行批量的订阅,命令格式这样的
psubscribe channel*
那个假如需要向订阅者发布消息,就使用下面的命令进行发布即可
ppublish channel1 message
ppublish channel2 message
这样,进行订阅的用户就能收到发过来的信息了