最近在学习Redis,先看看简介:
Redis 是完全开源免费的,遵守BSD协议(可以自由的使用,修改源代码的协议,当然需要满足一定的条件),是一个高性能的key-value数据库。
特点&&优点:
支持数据的持久化,可以将内存中的数据保存在磁盘内,重启的时候可以再次加载进行使用。
不仅支持key-value类型的数据,同时提供list,set,zset,hash等数据结构的存储。
支持数据的备份,即master-slave模式的数据备份。
支持丰富的特性,如publish/subscribe,通知,key过期等。
性能及高,读110000次/s,写81000次/s。
Redis的所有操作都是原子性的,要么成功执行,要么失败完全不执行(回滚)。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
与其他key-value存储的不同点:
数据结构更为复杂(并提供对他们的原子性操作),其数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。
相比在磁盘上相同的复杂的数据结构,在内存中操作十分简单,可以做很多内部复杂性很强的事情。
Redis的安装
Windows下安装:
下载地址:https://github.com/MSOpenTech/redis/releases
支持32位和64位,下载压缩包到本地,解压,重命名为Redis;
打开命令行,切换到Redis目录,运行 redis-server.exe redis.windows.conf;
此时再次打开命令行(第一个命令行不要关,关闭后无法访问服务端),切换到Redis目录下并运行redis-cli.exe -h 127.0.0.1 -p 6379 ;
设置键值对 set myKey xxx,取出键值对 get myKey。
Linux下安装:
在终端下载Redis:
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
使用档案名字解压缩:
$ tar xzf redis-2.8.17.tar.gz
转到Redis路径:
$ cd redis-2.8.17
make:
$ make
启动redis服务:
$ cd src
$ ./redis-server
补充:什么是原子性,什么是原子性操作
例:
A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:
从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。
在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。
如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电什么的,导致转帐事务意外终止了,而此时B的帐户里还没有增加1000块钱。那么,我们称这个操作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减1000块的状态,B的帐户的原来的状态。此时A的帐户仍然有3000块,B的帐户仍然有2000块。
如果把一个事物看做一个程序,它要么完整的被执行,要么完全不执行,这种特性就叫做原子性。
我们把这种要么一起成功(A账户成功减少1000,B账户成功增加1000),要么一起失败(A账户回到原来的状态,B账户也回到原来的状态)的操作叫原子性操作。