Redis

Redis

sf2gisz@163.com

2015年4月22日

 

1  目标:服务器端高速缓存。

客户端向服务器发起大量请求时,使用key-value类型的高速缓存,能够快速响应请求。

2 原理:key-value数据库服务器。

高速key-value字典服务器。

3 方法:Redis(Remote Dictionary Server)。

默认9个及以下修改时,15分钟持久化一次。

参考:http://www.w3cschool.cc/redis/redis-tutorial.html

http://www.cnblogs.com/stephen-liu74/archive/2012/03/12/2348935.html

3.1 Redis编译

Redis默认只支持Linux,在Windows上需要使用MSOpenTech小组开发的MSVS相关源程序。

Redis源码(Linux):http://redis.io/

最新Redis for Windowhttps://github.com/MSOpenTech/redis/tree/2.8

3.2 在VS下编译(VS2013)

打开Redis下的MSVS目录下的.slu工程。

编译。

完成后在相应的debug/release目录下有输出文件。

3.3 Redis服务器:Redis-server.exe

Redis-server.exe是服务器程序。下载或编译后,新建redis.conf文件,用于配置服务器参数。

打开方式为:

Redis-server.exe redis.conf

配置文件:key value(注释)。参考:http://blog.csdn.net/java2king/article/details/5754476

服务器打开后,需要一直运行。

3.4 Redis客户端:Redis-cli.exe

3.4.1连接

redis-cli.exe:redis-cli.exe–h ip –p port

Ip为服务器所在IP,port为redis服务的端口号,从服务程序可以看到为6379(默认值)。

3.4.2数据

写入数据:set key value

获取数据:get key

删除数据:del key

详细命令参见:http://www.w3cschool.cc/redis/redis-keys.html

示例:

写入配置:config set key value

读出配置:config get key,当key为*时读出所有配置。

数据类型:

String:默认方式,最多512M,可以转换为其它数据类型。

哈希Hash:hmset key field1value1[f v];hgetall key

列表List:lpush name item;lrange name startposendpos

无序唯一值集合Set:sadd name item;smembers name

有序集合zset:zadd namescore item;zrangebyscore name

3.4.3消息分发与订阅

分发:publis channel message

订阅:subscribe channel

3.4.4事务

MULTI开始,中间所有操作,exec进行原子执行

3.4.5脚本:使用lua

3.4.6服务器信息:info

3.4.7数据备份与恢复:save,dump.rdb

备份:save,将在服务目录生成dump.rdb。

恢复:将dump.rdb放到服务目录,重启服务自动恢复。

3.4.8安全:密码设置

查看当前密码:config get requirepass

设置密码:config set requirepass “psw”,密码设置后所有没有输入密码的客户端需要重新验证。

验证密码:Auth psw

3.5 Redis性能测试:Redis-benchmark.exe

-t 命令,命令…

-n 请求数。

3.6 Redis开发(C++)

Redis官方不支持在Windows下开发,使用MSOpenTech的源码,可以编译为静态库。

编译静态库:需要编译hiredis和win32_interop两个静态库。

头文件:将hiredis和win32_interop加入到当前包含目录。

连接服务器:redisConnect(ip,port),返回redisContext *,是后续命令的上下文对象。

输入命令:redisComment(context,cmd,value),cmd是带参数的命令,value是其中的参数值。返回void *值,需要强制转化为redisReply解析结果。

返回结果:redisReply可以解析为各种格式。

参考:http://www.cnblogs.com/raker/p/4368741.html

http://www.kazaff.me/2013/02/21/hiredis%E5%85%A5%E9%97%A8/

示例:

#include "stdafx.h"
 
#include <iostream>
#include <hiredis.h>
#pragma comment(lib,"hiredis.lib")
#pragma comment(lib,"Win32_Interop.lib")
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
            //connect
            redisContext *pContext = redisConnect("127.0.0.1", 6379);
            if (NULL == pContext || pContext->err){
                        cout << pContext->errstr;
            }
            cout << "connect to redis server successed."<<endl;
 
            //auth
            redisReply *pAuth = (redisReply *)redisCommand(pContext, "auth %s", "xxyyuu");
            cout << "auth=" << pAuth->str << endl;
            freeReplyObject(pAuth);
            
            //test
            redisReply *pReply = (redisReply *)redisCommand(pContext, "ping");
            cout << "reply=" << pReply->str<<endl;
            freeReplyObject(pReply);
 
            getchar();
            return 0;
}

结果:

connect to redis server successed.
auth=OK
reply=PONG
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里曼的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值