Redis系列(1)之安装
2014-11-28 22:59
190 查看
Redis系列(1)之安装
由于项目的需要,最近需要研究下Redis。Redis是个很轻量级的NoSql内存数据库,它有多轻量级的呢,用C写的,源码只有3万行,空的数据库只占1M内存。它的功能很丰富,可以将其用作缓存,队列系统等。我们的项目就是用其作为缓存系统。关于Redis的介绍这里就不多说,刚上手完了一会,感觉还不错。那么熟悉Redis就从安装开始。1. Redis 单机的安装
相比于Hbase的安装,Redis的安装非常简单。首先从官网上下载安装包,注意Redis的版本规则是次版本(即小数点后的数字)是偶数的话就是稳定版本(如2.4,2.6),如果为奇数则为非稳定版本。我使用的是2.8.17
解压安装包好后,进入目录,由于redis是用c写的运行make进行编译
tar xzvf redis.2.8.17.tar.gz cd redis.2.8.17 make
运行make test检查编译是否OK,OK的话有提示
192:redis-2.8.17 rcf$ make test ... \o/ All tests passed without errors! Cleanup: may take some time... OK
运行make install , 将 可执行文件复制到/usr/local/bin里面,这样就可以在哪都运行redis了。需要注意下root的权限问题。
192:redis-2.8.17 rcf$ sudo make install Password: cd src && /Applications/Xcode.app/Contents/Developer/usr/bin/make install Hint: It's a good idea to run 'make test' ;) INSTALL install INSTALL install INSTALL install INSTALL install INSTALL install
这个时候会有5个可执行文件,他们分别是redis-server,redis-cli,redis-benchmark,redis-check-aof,redis-check-dump,各文件功能如下表所示。
文件名 | 说明 |
redis-server | Redis服务器 |
redis-cli | Redis命令行客户端 |
redis-benchmark | Redis性能测试工具 |
redis-check-aof | AOF文件修复工具 |
redis-check-dump | RDB文件检查工具 |
92:redis-2.8.17 rcf$ redis-server [3360] 27 Nov 22:50:08.984 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf [3360] 27 Nov 22:50:08.985 * Increased maximum number of open files to 10032 (it was originally set to 256). _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 2.8.17 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in stand alone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 3360 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' [3360] 27 Nov 22:50:08.986 # Server started, Redis version 2.8.17 [3360] 27 Nov 22:50:08.986 * The server is now ready to accept connections on port 6379
至此看似redis安装完成了,其实不然。你会发现这个redis-server命令在生产开发环境中并不很好用,这个时候可以用脚本来更好的控制Redis。在util文件中,有脚本redis_init_script来控制redis-server的开始关闭,但是需要进行配置。通过查看这个脚本,不难发现其实用的也是redis-server这个命令。只是相比于简单的使用redis-server命令,它使用了这种方式:
redis-server ${conf}
${conf} 表示配置文件的路径。由此可见,我们可以自定义配置文件的路径,以及通过修改配置文件来优化redis。
#!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. REDISPORT=6379 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/redis/${REDISPORT}.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
通过修改REDISPORT和CONF两个参数我们就可以修改redis的端口以及配置文件和持久化文件,日志文件的路径。新建两个文件夹并各自命名,比如新建以下两个文件。当然我也可以将下面的两个文件目录合并在一起。比如我新建目录/rcf/6379 用来存放配置文件和持久化文件。
目录名 | 说明 |
/etc/redis | 存放redis配置文件 |
/var/redis/端口号 | 存放redis持久化文件 |
参数 | 值 | 说明 |
daemonize | yes | 使redis以守护进程模式运行 |
pidfile | /var/run/redis_端口号.conf | 设置redis的PID文件位置。需要与redis_init_script的PIDFILE参数一致 |
port | 端口号 | 设置redis监听的端口号 |
dir | /var/redis/端口号 | 设置持久化文件存放位置 |
192:utils rcf$ ./redis_init_script Please use start or stop as first argument 192:utils rcf$ ./redis_init_script start Starting Redis server... 192:utils rcf$ redis-cli 127.0.0.1:6379> ping PONG
2. Redis 的简单使用
2.1 Redis的启动与关闭
server启动方式直接运行可执行文件,运行redis-server来启动,但是该方法不是守护进程方式。
经过上章节配置后,可以使用redis_init_script start脚本来启动,比较灵活。
使用redis-server ${conf}的方式来启动,需要配置${conf}配置文件路径,该方式等同于redis_init_script方式。
client启动方式
直接运行可执行文件,运行redis-cli来启动,该方式启动是交互性的命令行操作。还可以通过-h和-p参数来自定义地址和端口号,比如
userdeMacBook-Pro:utils rcf$ redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> ping PONG 127.0.0.1:6379>
redis-cli ${cmd}直接来进行相关操作,${cmd}是具体的操作,比如:
userdeMacBook-Pro:utils rcf$ redis-cli ping PONG
Redis的关闭,使用redis-cli shutdown命令。当redis收到shutdown命令后,会先切断所有客户端的链接,然后根据配置执行持久化,最后完成退出。Redis可以妥善处理SIGTERM信号,所以使用'kill Redis的进程'也可以正常结束Redis,效果跟redis-cli shutdown一样。
2.2 Redis的配置设置
第一种在启动的时候,使用redis-server ${conf},第二种直接传入配置设置,redis-server ${conf} --loglevel warning 。其中--loglevel warning操作会覆盖${conf}中关于redis-server的设置,但是Redis的配置较多,且该方式不灵活,所以不推荐。
第三种在Redis运行的时候通过CONFIG SET命令在不重启redis的情况下动态修改部分配置,这种方式较灵活,但是并不能对所以的配置有效,只支持部分配置。
127.0.0.1:6379> config get loglevel 1) "loglevel" 2) "notice" 127.0.0.1:6379> config set loglevel warning OK 127.0.0.1:6379> config get loglevel 1) "loglevel" 2) "warning" 127.0.0.1:6379>
2.3 Redis的基本概念
Redis是个字典结构的存储服务器,它实际上一个Redis实例提供了多个来存储数据的字典,客户段可以制定将数据存放在哪个字典中。这个跟关系型数据库实例可以创建多个数据库有点类似,但是两者又有较大的区别。redis的字典数据库是以数字命令的,每一个数据库对外都是一个以0开始的递增的数字命名,Redis默认支持16个数据库,可以通过配置参数databases来修改这一参数。客户端与redis建立连接后会自动选择0号数据库,不过可以通过select命令跟换数据库。因此Redis不支持自定义数据库的名字,每个数据库以编号命名,开发者必须自己记录哪些数据库存储了哪些数据。
127.0.0.1:6379> select 0 OK 127.0.0.1:6379> set foo 1 OK 127.0.0.1:6379> get foo "1" 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> get foo (nil)
Redis也不支持为每个数据库分别设置不同的访问密码,所以一个客户端要么可以访问所有数据,要么连一个数据库也没有访问权限。
最重要的一点,多个数据库之间并不是完全隔离的,比如FLUSHALL命令可以清除一个Redis实例中所有数据库的数据。
因此,Redis的数据库更像是一种命名空间,且不适应存放不同应用程序的数据。由于Redis是个轻量级的数据库,一个空的redis实例占用内存只有1M,所以可以通过建立多个Redis实例的方式来避免以上缺点。
2.4 Redis的数据类型
Redis支持一下几种数据类型:字符串类型,string
散列类型,hash
列表类型,list
集合类型,set
有序集合类型,zset
2.5 Redis的基础操作
select 0 选择数据库keys pattern ,返回所有符合pattern的所有键, 使用该命令需要遍历所有的键,数据量大时性能,生产环境时候不建议使用。pattern支持以下通配符
符号 | 含义 |
? | 匹配单个字符 |
* | 匹配多个字符(包括0个) |
[] | 匹配括号内的任一字符,可以使用“-”表示一个范围,如a[b-d]可以匹配ab,ac,ad |
\x | 匹配字符x,用于转义 |
del key1 [key2 ...],可以删除一个或者多个key,返回值为为删除键的个数。DEL命令不支持通配符,但是可以用以下两个方法来实现,
结合linux的管道和xargs命令实现所有符合规则的键。比如要删除所以以"user:"开头的键,可以使用redis-cli keys "user:*" | xargs redis-cli del
del支持多个键作为参数,所以可以执行redis-cli del `redis-cli keys "user:*"`,注意 这里用的是"`"而不是单引号。
set key value , 添加键key,其值为value。
get key ,获取键key的值。
type key,查看建Key的值的类型。
总结:
本节主要介绍了Redis的安装,基础的概念,以及基本的操作。经过本节的学习,对于Redis已经有了基础的了解,下一节我们将学习下Redis的数据类型以及相关操作。相关文章推荐
- NOSQL系列-Redis精简版安装与Ruby测试
- Redis系列-安装部署维护篇
- Redis系列~安装(一)
- C# Redis学习系列一:Redis的认识、下载、安装、使用
- C# Redis学习系列一:Redis的认识、下载、安装、使用
- PHP相关系列 - Linux下安装Redis
- C# Redis学习系列一:Redis的认识、下载、安装、使用
- 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装以及操作redis问题整理
- 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
- C# Redis学习系列一:Redis的认识、下载、安装、使用
- redis安装配置 - ttlsa教程系列之redis
- Linux系列软件源码安装之四-----redis
- Redis入门系列之安装redis和配置redis
- 组件-------(一)redis系列--安装部署redis+实现redis分布式缓存 java+Spring+redis
- Redis系列(1)---Redis的介绍和安装
- Redis系列-初识redis、安装
- Redis系列-安装部署维护篇
- Redis系列(二)Linux下安装Reids
- redis学习系列--1.redis下载安装配置
- C# Redis学习系列一:Redis的认识、下载、安装、使用