redis基础之简介安装和配置

Redis是Remote Dictionary Server(远程字典服务器)的缩写,它可以以字典结构村粗数据,并允许其他应用通过TCP协议读写字典中的内容。同大多数脚本语言中的字典一样,Redis字典中的键值除了可以是字符串,还可以是其他数据类型。目前Redis支持的兼职数据有:

  • 字符串
  • 散列类型
  • 列表类型
  • 集合类型
  • 有序集合类型
Redis数据库中的所有数据都存储在内存中,由于内存的读写速度远快于硬盘,因此Redis在性能上比其他基于硬盘存储的数据库有非常明显的优势,在一台普通的笔记本上,Redis可以再一秒内读写超过十万个键值。而将数据存储在内存中也有问题,比如程序退出后内存中的数据会丢失,不过Redis提供了对持久化的支持,可将内存中的数据异步写入到硬盘中,同时会中断或影响服务。

Redis的安装

在centos 6.5系统中,可根据源码来安装:
#!/bin/bash
yum install tcl tcl-devel
git clone git clone https://github.com/antirez/redis.git
cd redis
make
make test
make install

 启动Redis

直接运行redis-server即可启动Redis,Redis服务默认会使用6379端口,通过--Port参数可以自定义端口号。在linux系统中,可以通过初始化脚本启动Redis,使Redis能随系统自动运行,在生产环境中推荐使用此方法运行Redis。在Redis源代码中有utils/redis_init_script的初始化脚本文件,内容如下:
#!/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"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

需要配置Redis的运行方式和持久化文件、日志文件的存储位置等,步骤如下:
  1. 配置初始化脚本。首先将初始化脚本复制到/etc/init.d目录中,文件名为redis_端口号,其中端口号表示让Redis监听的端口号,客户端通过该端口号链接Redis。然后修改脚本中的REDISPORT变量的值为同样的端口。
  2. 建立需要的文件夹:/etc/redis(存放Redis的配置文件),/etc/redis/端口号(存放Redis的持久化文件)
  3. 修改配置文件。首先将Redis配置文件模板(redis源代码根目录下的redis.conf文件)复制到/etc/redis目录中,以端口号命名(如“6379.conf”),然后对照下列参数进行编辑:
daemonize         yes                                            使用守护进程模式运行
pidfile                  /var/run/redis_端口号.pid       设置Redis的PID文件位置
port                       端口号                                     设置Redis的监听端口号
dir                        /var/redis/端口号 设置持久化文件存放位置

$ sudo chmod+x  /etc/init.d/redis_端口号

然后就可以通过使用 /etc/init.d/redis_端口号  start来启动Redis了,而后需要执行如下命令使得Redis随系统自动启动:sudo chkconfig redis_端口号 on

停止Redis

考虑到Redis有可能将内存中的数据同步到磁盘中,强制终止Redis进程可能会导致数据丢失。正确的做法是想Redis发送SHUTDOWN命令:
$ redis-cli SHUTDOWN
当Redis收到SHUTDOWN命令后,会先断开所有客户端的链接,然后根据配置文件执行持久化,最后完成退出。Redis可以妥善处理SIGTERM信号,所以使用"kill Redis_pid"也能正常结束Redis,效果与发送SHUTDOWN命令一样。

Redis客户端

redis-cli(Redis Command Line Interface)是Redis自带的基于命令行的Redis客户端,是学习和检测Redis的重要工具。

1. 发送命令
通过redis-cli想Redis发送命令的有两种方式,第一种方式将命令作为redis-cli的参数执行,比如"redis-cli SHUTDOWN"。redis-cli执行时会自动按照默认配置(服务器地址为1270.0.1,端口6379)链接Redis,通过-h和-p参数可以自定义地址和端口号:
$ redis-cli -h 127.0.0.1 -p 6379

Redis提供了PING命令来测试客户端与Redis的链接是否征程,如果链接正常会收到回复PONG
$ redis-cli PING
第二种方式是不附带参数运行redis-cli,这样会进入交互模式,可自由输入命令,这种方式在要输入多条命令时比较方便:
$redis-cli
redis 127.0.0.1:6379> PING
PONG
redis 127.0.0.1:6379>ECHO hi
"hi"

2. 返回值
命令的返回值有5种,对于每种类型,redis-cli的展现结果都不同
  • 状态回复(status reply)
状态回复是最简单的一种回复,比如像Redis发送SET命令设置某个键值对时,Redis回复OK表示设置成功。另外对PING命令的回复PONG也是状态回复
  • 错误回复(error reply)
错误回复以error开头,并跟上错误信息表命令不存在挥着命令格式有错误
  • 整数回复(integer reply)
Redis虽然没有整数类型,但却提供了一些用于整数操作的命令,比如递增键值的INCR命令会以整数形式返回递增后的键值,除此之外,一些其他命令也会返回整数,比如可以获取当前数据库中键数量的DBSIZE命令等。整数回复以(integer)开头,并在后面跟上整数数据
  • 字符串回复(multi-bulk reply)
字符串回复是最常见的一种回复类型,当请求一个字符串的键值或一个其他类型的中的某个元素时就会得到一个字符串回复。字符串回复以双引号包裹,当请求键值不存在时,会得到一个空结果,显示为(nil)
  • 多行字符串回复(multi-bulk reply)
多行字符串回复同样也很常见,当请求一个非字符串类型键的元素列表时就会受到多行字符串回复。多行字符串回复中的每行字符串都可以是一个序号开头,比如:
redis <span style="font-family: Arial, Helvetica, sans-serif;">127.0.0.1:6379</span><span style="font-family: Arial, Helvetica, sans-serif;">> KEYS *</span>
1) "bar"
2) "foo"

Redis配置

Redis配置文件配置了各个选项,如port设置,是否启用持久化支持,日记级别等。启用配置文件的方法是在启动时将配置文件的路径作为启动参数传递给redis-server
$ redis-server /path/to/redis.conf

通过启动参数传递同名的配置选项会覆盖配置文件中相应的参数,比如:
$ redis-server /path/to/redis.conf --loglevel warning
则loglevel的warning级别会覆盖redis.conf中设置的级别。Redis提供了一个配置文件的模板redis.conf,位于源代码目录的根目录中。除此之外,还可以再Redis运行时通过CONFIG SET命令在重启Redis的情况下动态修改Redis配置,就像这样:

redis 127.0.0.1:6379> CONFIG SET loglevel warning

但并不是所有的配置都可以使用CONFIG SET命令修改,下表中列出了常用config配置情况


同样在运行时也能使用CONFIG GET命令获取Redis当前的配置情况,如:
redis 127.0.0.1:6379>  CONFIGGET loglevel
1) "loglevel"
2) "waring"

多数据库

Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存在在哪一个字典中,这与我们熟知的在一个关系型数据库实例中可以创建多个数据库类似,所以讲其中的每个字典理解成一个独立的数据库。
每个数据库对外都是以一个从0开始递增的数字命名,Redis默认支持16个数据库,可以通过配置database来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库,如选择1号数据库:
redis 127.0.0.1:6379> SELECT 1
OK
redis[1] > GET foo
(nil)
然而这些以数字命名的数据库又于我们理解的数据库有所区别。首先Redis不支持自定义数据库名字,每个数据库都以数字编号命名,开发者必须记录哪些数据库存储了哪些数据。另外Redis也不支持为每个数据库设置不同的访问密码,所以一个客户端要么可以访问全部的数据库,要么一个数据都没有权限访问。最重要的一点事多个数据库之间并不是完全隔离的,比如FLUSHALL命令可以清空一个Redis实例红的所有数据库中的数据。这些数据库更像是一种命名空间,而不事宜存储不同应用程序的数据。比如,可以用0号数据库存储某个应用生产环境的数据,使用1号数据库存储测试环境中的数据,但不事宜用0号数据库存储A应用的数据而用1号数据库存储B应用的数据,不同的应用应该使用不同的redis实例存数数据。由于Redis非常轻量级,一个空Redis实例占用的内存只有1M左右,所以不用担心多个Redis实例会额外占用很多内存。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值