redis总结

1.redis是什么?

   redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。  
   Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
 
  Nosql 非关系型数据库
    不仅仅是数据
    没有固定的语言
    键值对存储,列存储,图形数据库等
    最终一致性
    CAP定理和BASE(异地多活)
    高性能,高可用,高扩展
 
  MongoDB是一个基于分布式文件存储的数据库。C++编写
    介于关系型数据库和非关系型数据中中间的产品!
    是非关系型数据库中功能最丰富,最想关系型数据库的!
  
  Redis可以用来做什么?
    1.内存存储,持久化,内存中是断电即失,所以持久化很重要(RDB,AOF)
    2.效率高,可以用于高速缓存
    3.发布订阅系统
    4.地图信息分析
    5.计时器
2.Redis单线程
  Redis是单线程的,redis是基于内存操作,CPU不是Redis性能的瓶颈
  
  Redis 为什么比单线程快?
    核心:redis 是将所有的数据全部放在内存中,所以单线程去操作效率最高,多线程(CPU上下文会切换:耗时的操作),对于内存系统来说,如果没有上下文切换效率最高。
3.事务
  Redis 单条命令式保存原子性的,但是事务不保证原子性!
  Redis事务本质:一个组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按顺序执行!一次性,顺序性,排他性!
  开启事务(multi)
  命令入队
  执行事务(exec)
  取消事务(discard)
 
  变异性异常,事务中所有命令都不会被执行
 
  运行时异常,如果事务队列中存在语法性,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常
4.监控
  悲观锁:
    很悲观,认为什么时候都会出问题,无论什么时候都会加锁
  乐观锁:
    很乐观,认为什么时候都不会出问题,所以不会上锁!更新数据的时候判断下,在此期间是否修改过这个数据
测试多线程修改值,使用watch可以当作redis的乐观锁操作!
unwatch  放弃监控
5.Jedis
  Jedis: 是Redis官方推荐的java连结开发工具
  

 

   随机返回key空间的一个 jedis.randomkey()

  重命名 jedis.rename(“username”" ")

  springboot

  jedis被替换成lettuce

  jedis:采用直连,多个线程操作不安全

  lettuce:采用netty,实例可以在多个线程中共享

  
  
posted @ 2021-04-12 18:02  氺棣  阅读(66)  评论(0)    收藏  举报