- 简介
- 最近开始接触NoSQL,翻译过来就是 not only sql,非关系型数据库吧。
- 其中主要有四大类NoSQL,今天我们介绍其中的一种键值对的NoSQL:Redis。
- 定义:Redis是一个开源的使用ANSI 编写、支持网络、可基于内存亦可持久化的日志型、Key-Value ,并提供多种语言的API。
- 安装(Windows)
- 先说下安装吧!感觉这东西跟mongodb差不多,安装和布置挺简单,地址:https://github.com/dmajkic/redis/downloads 下载下来的包里有两个,一个是32位的,一个是64位的。根据自己的实情情况选择,我的是32bit,把这个文件夹复制到其它地方,比如D:\redis 目录下。打开一个cmd窗口 使用cd命令切换目录到d:\redis 运行 redis-server.exe redis.conf如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:这时候别启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 出现下图:winodows 环境下的配置及相关命令:这时候,就已经完成配置了,现在说下它的的redis.conf配置文件。下面是相关项的说明:
更改redis的配置需要修改redis.conf文件,以下是它一些主要的配置注释:
#是否作为守护进程运行daemonize no#Redis 默认监听端口port 6379#客户端闲置多少秒后,断开连接timeout 300#日志显示级别loglevel verbose#指定日志输出的文件名,也可指定到标准输出端口logfile redis.log#设置的数量,默认最大是16,默认连接的数据库是0,可以通过select N 来连接不同的数据库databases 32#Dump持久化策略#当有一条Keys 数据被改变是,900 秒刷新到disk 一次#save 900 1#当有10 条Keys 数据被改变时,300 秒刷新到disk 一次save 300 100#当有1w 条keys 数据被改变时,60 秒刷新到disk 一次save 6000 10000#当dump .rdb 数据库的时候是否压缩数据对象rdbcompression yes#dump 持久化数据保存的文件名dbfilename dump.rdb########### Replication ######################Redis的主从配置,配置slaveof则实例作为从服务器#slaveof 192.168.0.105 6379#主服务器连接密码# masterauth
############## ############设置连接密码#requirepass ############### LIMITS ###############最大连接数# maxclients 128#最大内存使用率# max ########## APPEND ONLY MODE ##########是否开启日志功能appendonly no# AOF持久化策略#appendfsync always#appendfsync everysec#appendfsync no################ VIRTUAL MEMORY ############是否开启VM 功能#vm-enabled no# vm-enabled yes#vm-swap-file logs/redis.swap#vm-max-memory 0#vm-page-size 32#vm-pages 134217728#vm-max-threads 4 主从复制
在从服务器配置文件中配置slaveof ,填写服务器IP及端口即可,如果主服务器设置了连接密码,在masterauth后指定密码就行了。
持久化
- redis提供了两种持久化文案,Dump持久化和AOF日志文件持久化。
- Dump持久化是把内存中的数据完整写入到数据文件,由配置策略触发写入,如果在数据更改后又未达到触发条件而发生故障会造成部分数据丢失。
- AOF持久化是日志存储的,是增量的形式,记录每一个数据操作动作,数据恢复时就根据这些日志来生成。
持久化指令:SAVE、BGSAVE、LASTSAVE
命令行操作
使用CMD命令提示符,打开redis-cli连接redis服务器 ,也可以使用telnet客户端
# redis-cli -h 服务器 –p 端口 –a 密码
redis-cli.exe -h 127.0.0.1 -p 6379
连接成功后,就可对redis数据增删改查了,如字符串操作:
以下是一些服务器管理常用命令:
info #查看服务器信息select
#选择数据库索引 select 1flushall #清空全部数据flushdb #清空当前索引的数据库slaveof <服务器> <端口> #设置为从服务器slaveof no one #设置为主服务器shutdown #关闭服务 端口> 服务器> Redis数据结构Redis又经常被认为是一个数据结构服务器。因为它的value不仅包括基本的string类型还有 list,set ,sorted set和hash类型。当然这些类型的元素也都是string类型。也就是说list,set这些集合类型也只能包含string 类型。你可以在这些类型上做很多原子性的操作。比如对一个字符value追加字符串(APPEND命令)。加加或者减减一个数字字符串(INCR命令,当 然是按整数处理的).可以对list类型进行push,或者pop元素操作(可以模拟栈和队列)。对于set类型可以进行一些集合相关操作 (intersection union difference)。memcache也有类似与++,--的命令。应用对于目前一些超大型数据库尤其是并发和数据读写性能上有着很大优势。Redis支持各种不同方式的序列。为了保证效率,都是缓存在内存中的,它也可以周期性的吧更新的数据写入磁盘或者把修改操作写入追加的记录文件。举例:在我使用的环境中,如SQLServer数据库与Application 的中间加入了Redis,这样不仅起到了一个中间的作用更大大提高了读写效率,同时减轻了数据库压力,也使安全性得到了极大保证。总结:今天简单介绍了Redis的安装和配置事项,以及部分基础知识,作为目前在使用的一款非常不错的中间件,是值得学习的。而且随着海量数据时代的到来这种NoSQL数据库会 得到广泛的应用,当然,目前看直接作为数据库使用还有气劣势,比如不遵循SQL标准、ACID属性、表结构等等,扩展性差,缺少安全机制。对于大型数据库而言还有很多的地方需要完善。但是作为中间价甚至小型数据程序还有尤其优点的。以后会对其有进一步讲解。