第一天Redis安装配置

一、Redis简介

redis 是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。

Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。它提供Python,Ruby,Erlang,PHP客户端,使用很方便。问题是这个项目还很新,可能还不足够稳定,而且没有在实际的一些大型系统应用的实例。此外,缺乏mc中批量get也是比较大的问题,始终批量获取跟多次获取的网络开销是不一样的。

二、Redis的安装

官网地址:http://www.redis.io/

Redis下载地址:http://www.redis.io/download

1、编译安装

# wget http://download.redis.io/releases/redis-2.8.17.tar.gz
# tar xf redis-2.8.17.tar.gz 
# cd redis-2.8.17
# make
# make test 
# make install
[[email protected] redis-2.8.17]# make test
cd src && make test
make[1]: Entering directory `/root/redis/redis-2.8.17/src‘
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] 错误 1
make[1]: Leaving directory `/root/redis/redis-2.8.17/src‘
make: *** [test] 错误 2
解决方法:
http://www.linuxfromscratch.org/blfs/view/cvs/general/tcl.html

////////////////////////没有明白这个包为什么会这么安装,那么麻烦///////////////////////
# tar xf tcl8.6.2-src.tar.gz 
# cd tcl8.6.2
# export SRCDIR=`pwd` &&

cd unix &&

./configure --prefix=/usr                       --without-tzdata                    --mandir=/usr/share/man             $([ $(uname -m) = x86_64 ] && echo --enable-64bit) &&
make &&

sed -e "s#$SRCDIR/unix#/usr/lib#"     -e "s#$SRCDIR#/usr/include#"      -i tclConfig.sh               &&

sed -e "s#$SRCDIR/unix/pkgs/tdbc1.0.1#/usr/lib/tdbc1.0.0#"     -e "s#$SRCDIR/pkgs/tdbc1.0.1/generic#/usr/include#"        -e "s#$SRCDIR/pkgs/tdbc1.0.1/library#/usr/lib/tcl8.6#"     -e "s#$SRCDIR/pkgs/tdbc1.0.1#/usr/include#"                -i pkgs/tdbc1.0.1/tdbcConfig.sh                        &&

sed -e "s#$SRCDIR/unix/pkgs/itcl4.0.1#/usr/lib/itcl4.0.0#"     -e "s#$SRCDIR/pkgs/itcl4.0.1/generic#/usr/include#"        -e "s#$SRCDIR/pkgs/itcl4.0.1#/usr/include#"                -i pkgs/itcl4.0.1/itclConfig.sh                        &&

unset SRCDIR
# make install &&
make install-private-headers &&
ln -v -sf tclsh8.6 /usr/bin/tclsh &&
chmod -v 755 /usr/lib/libtcl8.6.so

# mkdir -v -p /usr/share/doc/tcl-8.6.2 &&
cp -v -r  ../html/* /usr/share/doc/tcl-8.6.2
////////////////////////////////////////////////////////////////////////////////////////////////

2、拷贝redis配置文件

# mkdir /etc/redis
# cp /root/redis/redis-2.8.17/redis.conf /etc/redis/

3、建立redis服务启动用户

# useradd -s /sbin/nologin redis

4、简单的修改常用的配置选项

# vim /etc/redis/redis.conf 
daemonize   yes          #redis以守护进程的方式运行,no表示不以守护进程的方式运行(会占用一个终端)
timeout 300              #客户端闲置多长时间后断开连接,默认为0关闭此功能
loglevel  verbose        #设置redis日志级别
logfile stdout           #设置日志文件的输出方式,如果以守护进程的方式运行redis并且日志输出设置为stdout,那么日志信息就输出到/dev/null里面去了

5、提供redis的SysV脚本

注意:用这个脚本管理之前,需要先配置下面的内核参数,否则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上

# echo "vm.overcommit_memory = 1" >>/etc/sysctl.conf
此参数可用的值为0,1,2
	0表示当用户空间请求更多的内存时,内核尝试估算出可用的内存
	1表示内核允许超量使用内存直到内存用完为止
	2表示整个内存地址空间不能超过swap+(vm.overcommit_ratio)%的RAM值

# sysctl -p   #立刻生效

# vim /etc/init.d/redis

#!/bin/bash 
# 
# Init file for redis 
# 
# chkconfig: - 80 12 
# description: redis daemon 
# 
# processname: redis 
# config: /etc/redis.conf 
# pidfile: /var/run/redis.pid 
source /etc/init.d/functions
#BIN="/usr/local/bin" 
BIN="/usr/local/bin"
CONFIG="/etc/redis/redis.conf"
PIDFILE="/var/run/redis.pid"
### Read configuration 
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
RETVAL=0
prog="redis-server"
desc="Redis Server"
start() {
        if [ -e $PIDFILE ];then
             echo "$desc already running...." 
             exit 1
        fi
        echo -n $"Starting $desc: " 
        daemon $BIN/$prog $CONFIG
        RETVAL=$?
        echo 
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
        return $RETVAL
}
stop() {
        echo -n $"Stop $desc: " 
        killproc $prog
        RETVAL=$?
        echo 
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE
        return $RETVAL
}
restart() {
        stop
        start
}
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  condrestart)
        [ -e /var/lock/subsys/$prog ] && restart
        RETVAL=$?
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
   *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}" 
        RETVAL=1
esac
exit $RETVAL

增加为服务列表并设置开机启动

# chmod +x /etc/init.d/redis 
# chkconfig --add redis
# chkconfig --level 345 redis on

6、启动redis服务

# redis-server
# redis-server /etc/redis/redis.conf &
# service redis start

7、查看redis服务监听的地址和端口

# netstat -tnlp |grep redis
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      25350/redis-server

三、客户端测试Redis服务

第一种方法:通过redis客户端命令redis-cli
# redis-cli 
# redis-cli -h 192.168.1.127 -p 6379

127.0.0.1:6379> set name zhengyansheng
OK
127.0.0.1:6379> get name
"zhengyansheng"
127.0.0.1:6379> quit

# redis-cli set mykey ‘hello world!‘
OK
# redis-cli get mykey
"hello world!"
# redis-cli type mykey
string
# redis-cli strlen mykey
(integer) 12
第二种方法:通过telnet方法
# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is ‘^]‘.
set test "Welcome to BeiJing." 
+OK
get test
$19
Welcome to BeiJing.
strlen test
:19
quit
+OK
Connection closed by foreign host.

四、phpredis扩展安装

1、下载phpredis扩展包

wget https://github.com/nicolasff/phpredis/archive/master.zip

2、安装phpredis扩展

# unzip phpredis-master.zip 
# cd phpredis-master
# /usr/local/php/bin/phpize 
# ./configure --with-php-config=/usr/local/php/bin/php-config 
# make 
# make install
#安装完成后会输出一下信息,提示redis.so生成的目录路径
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

3、添加redis扩展

# vim /usr/local/php/etc/php.ini 
添加一行
extension = "redis.so"

4、重启nginx服务

# service nginx restart

5、访问phpinfo查看redis扩展的详细信息

四、Redis的用户认证

redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证。

Redis的用户认证有两种方法

1、临时的用户认证口令

2、永久的用户认证口令

临时设置Redis用户认证,重新启动Redis服务后就会失效
[[email protected] ~]# redis-cli 
127.0.0.1:6379> config set requirepass zhengyansheng
OK
127.0.0.1:6379> config get requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth zhengyansheng
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "zhengyansheng"
127.0.0.1:6379> quit

#重启Redis服务
[[email protected] ~]# service redis restart
Stop Redis Server:                                         [确定]
Starting Redis Server:                                     [确定]

#再次认证是否还要认证?
[[email protected] ~]# redis-cli
127.0.0.1:6379> set name tomcat
OK
127.0.0.1:6379> get name
"tomcat"
127.0.0.1:6379> quit
永久设置Redis用户,重启动Redis服务后依然生效

1、设置Redis密码
# vim /etc/redis/redis.conf 
requirepass zhengyansheng13260071987

2、重新加载Redis服务
# service redis restart

3、登陆Redis访问测试
# redis-cli 
127.0.0.1:6379> set name zhengyansheng
(error) NOAUTH Authentication required. #错误:提示没有认证通过

127.0.0.1:6379> auth zhengyansheng13260071987   #采用认证方式
OK
127.0.0.1:6379> set name zhengyansheng
OK
127.0.0.1:6379> get name
"zhengyansheng"
127.0.0.1:6379> quit

五、与Memcache的比较

memcache和redis都是内存型数据库,数据保存在内存中,通过tcp直接存取,memcached优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存。在我们团队的项目中,一开始用的是memcached,后来用redis替代。

相比memcached:

1、redis具有持久化机制,可以定期将内存中的数据持久化到硬盘上。

2、redis具备binlog功能,可以将所有操作写入日志,当redis出现故障,可依照binlog进行数据恢复。

3、redis支持virtual memory,可以限定内存使用大小,当数据超过阈值,则通过类似LRU的算法把内存中的最不常用数据保存到硬盘的页面文件中。

4、redis原生支持的数据类型更多,使用的想象空间更大。

5、前面有位朋友所提及的一致性哈希,用在redis的sharding中,一般是在负载非常高需要水平扩展时使用。我们还没有用到这方面的功能,一般的项目,单机足够支撑并发了。redis 3.0将推出cluster,功能更加强大

六、redis-clie的命令行参数

SET                      创建一个key;
GET                      获取一个key的值;
DEL                      ***一个key;
TYPE                     获取一个key的类型;
EXISTS                   判断一个key是否存在,0:存在,1,不存在;
KEYS                     获取给定模糊匹配的key;
EXPIRE                   设置一个key过期的秒数;
PERSTST                  ***一个key过期的秒数;
PEXPIRE                  设置一个key过期的毫秒数;
RENAME                   将一个key重命名;
RENAMENX                 将一个key重命名,且新的key必须是不存在的可以;
TTL                      获取key的有效时间;
时间: 2024-10-10 06:14:53

第一天Redis安装配置的相关文章

redis安装配置和使用;tomcat安装和使用

virtualbox主要有下面几种方式(不同版本称法不一样,但实质是一样的): 1.Intelnal Network:利用主机上的所有的虚拟机构建一个虚拟网络 2.NAT:能访问互联网,不能访问主机(或局域网)//通过这个下gcc 3.Host Interface:能访问主机(或局域网),不能访问互联网 修改过后 netstat restart 先确保Linux已安装gcc zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or

redis 安装配置学习笔记

redis 安装配置学习笔记 //wget http://download.redis.io/releases/redis-2.8.17.tar.gz 下载最新版本 wget http://download.redis.io/redis-stable.tar.gz 首先必须要有 gcc 与 make apt-get install gcc apt-get install make 1.解压 [email protected]:~# tar -xvf redis-stable.tar.gz 2.测

redis 安装配置及持久化详解

一.redis简介 二.redis安装 三.redis配置文件详解 四.redis持久化详解 1.redis 简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. Redi

Redis安装配置与Jedis访问数据库

一.NOSQL概要 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库.NoSQL数据库的四大分类 键值(Key-Value)存储数据库 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据.Key/value模型对于IT系统来说的优势在于简单.易部署.但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了. 举例如:Tokyo Cabinet/Tyrant, Redis, Voldemo

Linux下python3、virtualenv、Mysql、redis安装配置

一.在Linux安装python解释器 1.下载python3源码包 cd /opt/ wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz 2.下载python3编译的依赖包(复制粘贴下载即可) yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel read

redis安装配置教程及phpredis扩展安装测试

作者:zhanhailiang 日期:2014-10-16 推荐阅读: Redis持久化策略 关于Redis更多资料阅读 1. 下载redis-2.8.17.tar.gz:http://download.redis.io/releases/redis-2.8.17.tar.gz: 2. 编译安装配置如下: [redis-2.8.17]# make [redis-2.8.17]# make PREFIX=/usr/local/redis-2.8.17 install [redis-2.8.17]#

CentOS 6.6下Redis安装配置记录

转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/120.html?1455855209 在先前的文章中介绍过redis,以下内容为自己在CentOS上安装Redis的记录.供后期在做改进. 1.安装需要的支持环境 在安装Redis之前首要先做的是安装Unix的Tcl工具?,如果不安装的话后期将无法对Redis进行测试.在后期执行make test的时候返回如下错误信息:You need tcl 8.xuyao de5 o

Redis安装配置及在Python上的应用

最近在使用Kazoo(开源电话系统) API时,一次请求的处理需要调用几次API,只为了得到一个name和id的对应关系,耗时非常大,开始想使用一种简单的实现,直接将对应关系保存到静态类的静态变量中,但经过测试发现,这种方法还是会造成对应关系经常丢失的情况,后来简单了解了下Redis,发现比较适用于这种情况,具体操作过程如下所示: Redis安装与简单配置 开发环境为Ubuntu 12.04,在Ubuntu下Redis安装很简单,直接通过apt-get即可实现,具体如下所示: #安装Redis服

centos7中redis安装配置

1.官网下载对应版本,本例以5.0.5为例 2.tar -zxvf xxxxx 并mv到安装目录 3.进入redis-5.0.5目录下,执行编译命令 make 4.编译完成后,经redis安装到指定目录下 make PREFIX=/usr/local/redis install 5.安装完成后进入redis目录下,会发现有一个bin目录 6.启动 方式一,进入/usr/local/redis/bin里执行启动命令(默认端口为:6379) 方式二,后台启动,将redis-5.0.5目录下的redi