NoSQL = Not Only SQL,是非关系型的数据库,无需创建数据库字段就可以实现存储。
高性能键值对数据库,2008年在意大利出世,2009年开发完成并维护至今,读写速度惊人。
建议安装在Linux服务器上来运行测试
远程命令端:SecureCRT 7.3
ftp端:SecureFX 7.3
redis是C语言开发的,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要先安装gcc。
提示是否安装时输入y即可
出现以下内容表示安装gcc环境完成
利用filezilla.exe软件将本地redis安装包直接拖到远程linux服务器root目录里面
此时查看服务器根目录便可看到上传的文件
输入解压命令:tar -zxvf redis-3.0.7.tar.gz ,这样在根目录下可看到解压后的文件
进入到redis-3.0.7目录后输入make命令进行编译
在redis-3.0.7目录下输入安装命令:make PREFIX=/usr/local/redis install ,其中PREFIX=/usr/local/redis指定了redis的安装目录
在redis-3.0.7目录下输入拷贝命令:cp redis.conf /usr/local/redis
前端启动方式:在bin目录下输入命令 ./redis-server ,但这种方式必须按ctrl+c退出后才能进行其他命令操作,一般启动redis用后端启用方式。
后端启动方式:
输入命令vim redis.conf后进入编辑模式,修改配置文件中的daemonize no 为daemonize yes后保存退出;
在安装目录下输入启动命令:./bin/redis-server ./redis.conf;
可输入命令ps -ef | grep -i redis 来查找redis以便确认redis是否安装成功;
在bin目录下输入命令: ./redis-cli shutdown
我们可以用命令来向redis存入和获取数据,但实际开发中我们通常会用程序来向redis保存和获取数据,jedis是java首选的客户端开发包。
单例的方式:
连接池方式连接:
以上程序执行前都需要在linux服务器上设置打开6379端口才能连接到linux服务器:
在安装目录输入命令vim /etc/sysconfig/iptables 进入防火墙设置
加入以下设置
重启linux防火墙,输入命令:service iptables restart
二进制安全的,存入和获取的数据相同
value最多可以容纳的数据长度为512M
赋值 set key value
取值 get key
删除 del key
数值递增 incr key ,当前key为空时会创建这个key,并且value加1;不为空时判断value是否为数字型,若不是递增则报错
数值递减 decr key
扩展命令
增加数值 incrby key value ,key不存在时创建这个key并且加上对应数值
减去数值 decrby key value
拼接字符串 append key value
String key 和 String value 的map容器
每一个hash可以存储4294967295个键值对
赋值单个键值对 hset key key1 value1
赋值多个键值对 hmset key key1 value1 key2 value2
取值单个键值对 hget key key1
取值多个键值对 hget key key1 key2
取值全部键值对 hgetall key
删除一个或多个 键值对 hdel key key1 key2
删除整个hash del key
增加数字 hincrby key key1 value
自学命令
判断属性是否存在 hexists key key1
获取属性个数 hlen key
获取所有key hkeys key
获取所有值 hvals key
在事务中所有命令将被串行化顺序执行,事务执行期间redis不会再为其他客户端提供任何服务,从而保证事务中的所有命令都被原子化执行,在redis中如果某个命令执行失败,后面的命令还会被执行。
在事务开启之前,如果客户端和服务器之间发生通讯故障并导致网络断开,那么这之后执行的语句都将不会被服务器执行;如果中断事件是发生在客户端执行语句之后,那么这个事务中的所有命令都将被服务器执行。
redis的高性能是由于它所有的数据都存储在内存中,为了使redis在重启之后仍然能保证数据不丢失,就需要将数据从内存当中同步到我们的硬盘上,这个过程就叫做持久化操作。
优势:
a.整个redis数据库只包含一个文件,对文件备份非常方便,系统发生故障时很容易进行恢复 。
b.性能最大化,对于redis服务进程而言,在开始持久化时唯一需要做的只是分叉出一些进程,之后再由子进程完成持久化的工作,这样能最大化避免服务器进程执行IO操作。
c.相比AOF方式,如果数据集很大,RDB启动的效率会更高。
劣势:
a.因为是在指定时间间隔内更新数据,所以服务器宕机时容易丢失数据。
b.RDB由子进程完成持久化的工作,这样在数据集很大时可能会导致整个服务器停止几百毫秒甚至一秒钟。
配置redis.conf:
save 900 1 : 每900秒至少有1个key发生变化时往硬盘上写一次。
dbfilename dump.rdb : 指定数据的文件名,即dump.rdb。
dir ./ : 文件保存的路径,./表示当前的配置文件同路径下。
a.更高的数据安全性,每次修改数据才同步到磁盘,效率低但最安全。
b.这种机制对于日志文件的写入操作采用append模式,因此在写入过程中服务器出现宕机的现象也不会破坏日志文件中已经存在的内容。
c.如果日志过大,redis可以自动启用重写机制,除了日志文件,还有一个文件用于记录哪些修改命令被执行,这样方便重写。
劣势:
a.对于相同数量的数据集而言,AOF文件要比RDB文件要大一些。
b.根据同步策略不同,AOF效率比RDB低。
配置redis.conf:
appendonly no :默认为no即不使用AOF方式,改为yes便可启用AOF方式。
appendfilename "appendonly.aof" : 启用AOF方式后会产生一个名为appendonly.aof的文件。
同步策略:
appendfsync always 每修改一次同步到磁盘上 (通常为了安全会选择这种)
appendfsync eyerysec 每秒同步一次
appendfsync no 不同步