redis是什么
redis是一个Key-Value等多种数据结构的存储系统,可用于缓存,事件订阅,发布,高速队列等场景
该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。
异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。 多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
redis的应用场景有哪些
1,会话缓存(最常用) 2,消息队列,比如支付3,活动排行榜或计数 4,发布,订阅消息(消息通知) 5,商品列表,评论列表等
redis数据类型
一共支持5种数据类型 String(字符串) , hash(哈希) ,list(列表) set(集合) zset(sorted set有序集合)。 (1)String(字符串)
他是最基本类型 一个键对应一个值 需要注意的是一个键值最大存储为512M。 (2)hash(哈希)
hash是一个键值对集合,是一个String类型的field和value的映射表,适用于存储对象。 (3)表(列表)
是redis最简单的字符串列表,他是按插入顺序排序。 (4)组 (集合)
是字符串类型的无序集合,也不可重复 !! 无序 不可重复。 (5)zset (sorted set 有序集合)
是String 类型的有序集合,也不可重复。
事务
1.Redis的单条命令是保持原子性的,但是Redis事务不保持原子性;
2.Redis事务的本质:
(1)一组命令的集合,一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行;
(2)Redis事务没有隔离级别的概念,因为序列化执行命令不需要;
(3)Redis的事务 3.事务的错误处理:(导致没有原子性的原因)
1.编译型异常,即命令编译失败,所有命令都不会被执行;
2.运行时异常,即逻辑错误,比如Set中查找不存在的index的元素,对字符自增等,可以类比java中的1/0,这种情况下只有问题命令执行异常抛出错误,其他命令正常执行,因此不保证原子性;
4.Redis乐观锁:watch
Redis高级
1.Redis.conf详解:
1.INCLUDES:引入配置文件
2.NETWORK:
3.GENERAL:
4.SNAPSHOTTING:快照,与持久化相关
5.REPLICATION:有关主从复制;
6.SECURITY:可以在这里设置redis的密码,默认没有密码,也可以通过命令行设置
7.CLIENTS:一些限制
8.APPEND ONLY MODE:AOF持久化配置
|