Redis的安装和配置
twocode

    Redis是常用基于内存的Key-Value数据库,比Memcache更先进,支持多种数据结构,高效,快速。用Redis可以很轻松解决高并发的数据访问问题;做为时时监控信号处理也非常不错。

    1. Redis在Windows中安装

    在Windows系统上安装Redis数据库是件非常简单的事情,下载可执行安装文件(exe),双击安装即可。下载地址:                                

    https://github.com/rgl/redis/downloads

    Redis服务器运行命令:Redis安装目录/redis-server.exe

    Redis客户端运行命令:Redis安装目录/redis-cli.exe

    不做详解,毕竟NoSql的主要应用环境是Linux的服务器。

    2. Redis在Linux Ubuntu中安装

    系统 

        Ubuntu 14.04 LTS 64bit

    安装方式

        apt-get

    在Linux Ubuntu中安装Redis数据库

    #安装Redis服务器端

    ~ sudo apt-get install redis-server

    安装完成后,Redis服务器会自动启动,我们检查Redis服务器程序

    # 检查Redis服务器系统进程

    ~ ps -aux|grep redis

    redis     4162  0.1  0.0  10676  1420 ?        Ss   23:24   0:00 /usr/bin/redis-server /etc/redis/redis.conf

    conan     4172  0.0  0.0  11064   924 pts/0    S+   23:26   0:00 grep --color=auto redis

    # 通过启动命令检查Redis服务器状态

    ~ netstat -nlt|grep 6379

    tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN

    # 通过启动命令检查Redis服务器状态

    ~ sudo /etc/init.d/redis-server status

    redis-server is running

    3. 通过命令行客户端访问Redis

    安装Redis服务器,会自动地一起安装Redis命令行客户端程序。

    在本机输入redis-cli命令就可以启动,客户端程序访问Redis服务器。

    ~ redis-cli

    redis 127.0.0.1:6379>

    # 命令行的帮助

    redis 127.0.0.1:6379> help

    redis-cli 2.8.4

    Type: "help @" to get a list of commands in 

      "help " for help on 

      "help " to get a list of possible help topics

      "quit" to exit

    # 查看所有的key列表

    redis 127.0.0.1:6379> keys *(key和*之间有空格的)

    (empty list or set)


    基本的Redis客户端命令操作


    增加一条字符串记录key1

    # 增加一条记录key1

    redis 127.0.0.1:6379> set key1 "pekingpiao"

    OK

    # 打印记录

    redis 127.0.0.1:6379> get key1

    "pekingpiao"


    增加一条数字记录key2

    # 增加一条数字记录key2

    set key2 1

    OK


    # 让数字自增

    redis 127.0.0.1:6379> INCR key2

    (integer) 2

    redis 127.0.0.1:6379> INCR key2

    (integer) 3


    # 打印记录

    redis 127.0.0.1:6379> get key2

    "3"


    增加一条列表记录key3

    # 增加一个列表记录key3

    redis 127.0.0.1:6379> LPUSH key3 a

    (integer) 1

    # 从左边插入列表

    redis 127.0.0.1:6379> LPUSH key3 b

    (integer) 2

    # 从右边插入列表

    redis 127.0.0.1:6379> RPUSH key3 c

    (integer) 3

    # 打印列表记录,按从左到右的顺序

    redis 127.0.0.1:6379> LRANGE key3 0 3

    1) "b"

    2) "a"

    3) "c"


    增加一条哈希表记录key4

    # 增加一个哈希记表录key4

    redis 127.0.0.1:6379> HSET key4 name "Murry"

    (integer) 1

    # 在哈希表中插入,email的Key和Value的值

    redis 127.0.0.1:6379> HSET key4 email "murry@dangbingren.com"

    (integer) 1

    # 打印哈希表中,name为key的值

    redis 127.0.0.1:6379> HGET key4 name

    "Murry"

    # 打印整个哈希表

    redis 127.0.0.1:6379> HGETALL key4

    1) "name"

    2) "Murry"

    3) "email"

    4) "murry@dangbingren.com"


    增加一条哈希表记录key5

    # 增加一条哈希表记录key5,一次插入多个Key和value的值

    redis 127.0.0.1:6379> HMSET key5 username mayun password mypass age 3

    OK

    # 打印哈希表中,username和age为key的值

    redis 127.0.0.1:6379> HMGET key5 username age

    1) "mayun"

    2) "3"

    # 打印完整的哈希表记录

    redis 127.0.0.1:6379> HGETALL key5

    1) "username"

    2) "mayun"

    3) "password"

    4) "mypass"

    5) "age"

    6) "3"


    删除记录

    # 查看所有的key列表

    redis 127.0.0.1:6379> keys *

    1) "key2"

    2) "key3"

    3) "key4"

    4) "key5"

    5) "key1"

    # 删除key1,key5

    redis 127.0.0.1:6379> del key1

    (integer) 1

    redis 127.0.0.1:6379> del key5

    (integer) 1

    # 查看所有的key列表

    redis 127.0.0.1:6379> keys *

    1) "key2"

    2) "key3"

    3) "key4"

    4. 修改Redis的配置

    

    使用Redis的访问密码

    默认情况下,访问Redis服务器是不需要密码的,为了增加安全性我们需要设置Redis服务器的访问密码。设置访问密码为redisredis。

    用vi打开Redis服务器的配置文件redis.conf

    ~ sudo vi /etc/redis/redis.conf

    #取消注释requirepass

    requirepass pekingpiao


    让Redis服务器被远程访问

    默认情况下,Redis服务器不允许远程访问,只允许本机访问,所以我们需要设置打开远程访问的功能。

    用vi打开Redis服务器的配置文件redis.conf

    ~ sudo vi /etc/redis/redis.conf

    #注释bind

    #bind 127.0.0.1

    修改后,重启Redis服务器。

    ~ sudo /etc/init.d/redis-server restart

        或者

        sudo service redis-server restart

        Stopping redis-server: redis-server.

        Starting redis-server: redis-server.

    

    未使用密码登陆Redis服务器

    ~ redis-cli

    redis 127.0.0.1:6379> keys *

    (error) NOAUTH Authentication Required

    发现可以登陆,但无法执行命令了。

    

    登陆Redis服务器,输入密码

    ~  redis-cli -a pekingpiao

    redis 127.0.0.1:6379> keys *

    1) "key2"

    2) "key3"

    3) "key4"

    登陆后,一切正常。


    检查Redis服务器占用端口

    ~ netstat -nlt|grep 6379

    tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN

    我们看到从之间的网络监听从 127.0.0.1:3306 变成 0 0.0.0.0:3306,表示Redis已经允许远程登陆访问。


    我们在远程的另一台Linux访问Redis服务器(当然前提是对应的电脑上已经安装redis客户端)

    ~ redis-cli -a redisredis -h 192.168.1.122

    redis 192.168.1.122:6379> keys *

    1) "key2"

    2) "key3"

    3) "key4"

 5.配置php-redis   


    以上都是在终端下运行的,现在PHP还不能直接关联操作,需要下面的命令:

    sudo apt-get install php5-redis

    提示信息:

正在安装新版本的配置文件 /etc/php5/mods-available/redis.ini ...

php5_invoke: Enable module redis for fpm SAPI

php5_invoke: Enable module redis for cli SAPI

    重启nginx服务器,即可;

1435073678848847.png

    测试代码,redis.php:

附redis的属性和方法:

a)连接redis server:

connect :连接server

pconnect :长连接

auth :权限验证

select :选择DB

close : 关闭连接

 setOption : 设置 client 选项

getOption : 获取client选项

ping : ping redis server

echo : 输出 字符串

注意,如果频繁操作redis,不停地connect 和close会很耗性能的,这个时候,建议用pconnect 建立个长连接

 

b)字符串读写函数

append  :在值的后面追加值

decr :递减一个key的值

incr :递增一个key的值

get :获取一个值

set :设置一个值

getSet :设置值,并返回老值

mGet :批量获取值

mSet :批量设置值

strlen :获取值长度

注意:如果能用批量操作尽量用批量,减少频繁连接redis数据库性能


c)hash读写函数

hDel :删除一个多个域

hExists :判断一个hash域是否存在

hGet :获取hash域的值

hGetAll :获取所有域值

hIncrBy :自增长一个hash int域的值

hKeys :获取hash 所有域

hLen :获取域个数

hMGet :批量获取域的值

hMSet :批量设置域的值

hSet :设置域的值

hVals:得到所有域的值


d)list读写函数

lInsert:插入元素

lLen:list长度

lPop:移除并获取第一个颜色

lPush:插入一个元素

lRem:移除元素

lSet:设置元素值

 

e)set

sAdd:增加一个或多个成员

sIsMember:是否包含

sMembers:得到成员

sMove:移动成员

sPop:移除成员

sRandMember:得到随机成员

sRem:删除

 

f)sorted set 

zAdd:增加一个或多个

zCard:成员个数

zIncrBy:递增成员score

zRange:返回索引范围内的成员

zRangeByScore :返回score范围内的成员

zScore:获取成员score

zRem:移除一个或多个成员

网友评论已关闭