Redis学习

Redis简介

Redis是完全开源免费的,遵守BSD协议(①),是一个高性能的key-value数据库。
Redis与其他key-value缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供List、Set、ZSet、Hash(Redis数据结构)等数据结构的存储。
  • Redis支持数据的备份,即master-slave(主从)模式的数据备份。

Redis优势

  • 性能极高-Redis能读的速度是110000次/s,写的速度是81000次/s。
  • 丰富的数据类型-Redis支持二进制案例的Strings、Lists、Hashes、Sets以及Ordered Sets数据类型操作。
  • 原子-Redis的所有操作都是原子性(②)的,意思就是要么成功执行要么失败完全不执行,单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性-Redis还支持publish/subscribe,通知key过期等等特性。

Redis与其他key-value存储(③)有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

①什么是BSD协议?

BSD开源协议是一个给与使用者很大自由的协议。可以自由的使用、修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

  • 如果在发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  • 如果在发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
    BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。
    很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。各种开源协议介绍

②什么是原子性,什么是原子性操作?

举个例子:
A想要从自己的账户中转1000块钱到B的账户里,那个从A开始转账,到转账结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:

  • 1、从A的账户中减去1000块钱。如果A的账户里原来有3000块钱,现在就变成2000块了。
  • 2、在B的账户里加上1000块钱。如果B的账户里原来有2000块钱,现在则变成3000块了。
    如果在A的账户已经减去了1000块钱的时候,忽然发生了意外,比如停电什么的,导致转账事务意外终止了,而此时B的账户里还没有增加1000块钱。那么,我们称这个操作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的账户还没减1000块的状态,B的账户的原来的状态。此时A的账户仍然有3000块,B的账户仍然有2000块。
    我们把这种要么一起成功(A账户成功减少1000,B账户成功增加1000),要么一起失败(A账户回到原来状态,B账户也回到原来状态)的操作叫原子性操作。
    如果把一个事务可看作一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性。

③什么是key value存储?

JAVA中的map就是key=>value存储的。
键=>值(key=>value)对,键唯一,对应一个值,值的形式多样。
比如:

Map<string, int> map = new HashMap<string, int>();
map.put("ming", 1);
map.put("zi", 2);

这里定义了一个Map对象,并放置了两组数据键ming,对应值1,键zi,对应值2

map.get("ming");

这样会得到1这个值。
如果你再设置***map.put(“ming”, 3);*** 因为键ming已经存在,键值唯一,所以原先的值1会被覆盖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值