Redis是一个key value的存储系统,支持存储的value类型相对较多(包括String字符串、list链表、set集合、arrySet有序集合)

这些数据类型都支持 push、pop、add、remove及取交、并、差集等原子型操作(原子型指一个事物完整的操作,操作成功则提交,失败则回滚)

因此调用Redis的操作,不用考虑多线程间的并发问题。

在此基础之上,Redis支持各种不同方式的排序,为了保正效率,数据都是缓存在内存中的。

区别是Redis会周期性的把更新的数据写入磁盘,或者把修改操作写入追加的操作文件(前者为默认的RDB存储模式,RDB:是将数据写入一个零时文件,持久化结束以后,用这个零时文件替换上次持久化的文件,达到数据恢复的目的,其优点是:使用单独子进程来进行持久化,主经常不会进行任何操作,保证了Redis的高效性能,其缺点是:RDB是间隔一段时间进行持久化,如果持久化之间,Redis发生故障,会发生数据的丢失,所以这种方式适合数据要求不严谨的时候。其存储机制默认设置为,如果更改了一个key则间隔900秒之后,进行一次持久化存储,如果更改了10个key,则300秒后进行一次持久化存储,如果更改1万个key,则自修改时起,一分钟进行一次持久化存储,持久化完成后就将零时文件替换掉旧的RDB文件了)

RDB恢复数据:重启Redis服务,启动的时候Redis的server会从dump.rdb中同步数据。

AOD恢复数据:是将执行过的指令记录下来,数据恢复按照从前到后的顺序再将指令执行一遍,实现数据恢复。优点:可以保持更高的数据完整性,如果设置追加file的时间是1s,如果redis发生故障,最多会丢失1s的数据。且如果日志写入不完整支持redis-check-aof来进行日志修复;AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的flushall)。缺点:AOF文件比RDB文件大,且恢复速度慢。


java redis 哪些是原子操作 redis操作是不是原子操作_java redis 哪些是原子操作

 

 设计意图:将一些不常更改的数据,存一个副本到Redis中,客户端在请求这些数据的时候,将优先发送请求去Redis中获取相关数据,如果Redis中存在相关的数据,则直接返回,就不需要访问数据库了,如果在Redis中没有获取到,则发送请求去DB获取相关数据,在DB返回数据的同时,将最新最新的数据更新回Redis中,这样客户端在下次请求这个数据时,就可以直接从Redis中返回了。(且为了确保Redis缓存的实时性,即每当数据发送变化的时候,比如数据有被修改或删除的情况下,要同步更新Redis缓存信息,确保用户不会在缓存中取到旧的信息)

可以在操作数据时,先清空对应key下的数据,这样客户端请求时就会去db中更新,下次再请求时就可以直接从Redis中获取数据了。