• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

十分简单的redis使用说明及性能测试

mysql 搞代码 4年前 (2022-01-09) 23次浏览 已收录 0个评论
文章目录[隐藏]

转载请注明出处:http://blog.gaodaima.com/jmppok/article/details/18085181 redis相比很多人都知道,是一个内存式的key-value数据库,存取速度极快,使用非常简单,支持多种语言。本文对其使用进行一个简要说明,并进行简单测试。 1.下载与编译 可以从redis官

转载请注明出处:http://blog.gaodaima.com/jmppok/article/details/18085181

redis相比很多人都知道,是一个内存式的key-value数据库,存取速度极快,使用非常简单,支持多种语言。本文对其使用进行一个简要说明,并进行简单测试。

1.下载与编译

可以从redis官网下载最新的源码包:http://www.redis.io/

编译十分简单make既可。

2.redis安装与配置

实际上并不需要安装。redis编译后会在src目录下生成redis-server,它是一个可执行文件,即启动redis服务。不过它需要一个配置文件。配置文件写法网上很多了,这里直接给出一个示例:

daemonize yespidfile /tmp/redis/var/redis.pidport 6379timeout 300loglevel debuglogfile /tmp/redis/var/redis.logdatabases 16save 900 1save 300 10save 60 10000rdbcompression yesdbfilename dump.rdbdir /tmp/redis/var/appendonly noappendfsync always#glueoutputbuf yes#shareobjects no#shareobjectspoolsize 1024

将其保存为redis.conf
然后直接运行./redis-server redis.conf就可以启动redis服务了,是不是很方便呢?

3.C/C++访问redis

在redis源码目录下有一个deps目录,下面有一个hiredis目录。redis编译时会自动编译该目录生成libhiredis.a,通过引用hiredis.h 和 libhiredis.a就可以访问redis了。具体步骤如下:

1)创建一个redisContext

2)通过redisContext执行命令

3)从返回redisReply中获取所需数据

代码如下:

来源gaodaimacom搞#^代%!码网

redisContext * c = redisConnect((char *)"192.168.150.135",6379); const char * pData = "this is a test"; 
redisReply *reply1 = (redisReply *)redisCommand(c,"SET 100 %s",pData); 
freeReplyObject(reply1);
redisReply *reply2 = (redisReply *)redisCommand(c,"GET 100");

printf(“%s\n”,reply2->str);
freeReplyObject(reply2);

是不是非常简单呢? 

不过需要注意的是,redis接受的数据是字符串,对于二进制数据,可以通过base64编码来解决。具体可参看我的另一篇文章。

4.Java访问redis

redis可以支持多种语言,当然也可以支持Java。

首先需要下载redis的java包。jedis.jar。这里提供一个下载地址:redis的Java客户端jedis

使用如下:

Jedis jedis = new Jedis("192.168.150.135");jedis.set("100","this is a test");String data = jedis.get("100");

5.性能测试

测试方法:向redis写一个1M的数据,分别写10次,读10次,计算其耗时。分C++和Java两个版本进行测试。

C++测试代码

#include #include "hiredis.h"#include #include int main(int argc, char **argv){	printf("CLOCKS_PER_SEC:%d\n",CLOCKS_PER_SEC);	redisContext *c;    redisReply *reply;    c = redisConnect((char *)"one-60",6379);	char * pData;        reply = (redisReply *)redisCommand(c,"GET 0");	int size = strlen(reply->str);	pData = new char[size+1];	strcpy(pData,reply->str);    freeReplyObject(reply);		clock_t start, finish;	start = clock();		for(int i=0;i<10; i++)	{		reply = (redisReply *)redisCommand(c,"GET %d",i);		freeReplyObject(reply);	}		finish = clock();	double duration = (double)(finish - start) / CLOCKS_PER_SEC*1000;	printf("GET Time used:%f ms.\n",duration);			start = clock();		for(int i=0;i<10; i++)	{		reply = (redisReply *)redisCommand(c,"SET %d %s",i,pData);		freeReplyObject(reply);	}		finish = clock();	duration = (double)(finish - start) / CLOCKS_PER_SEC*1000;	printf("SET Time used:%f ms.\n",duration);					delete []pData;	redisFree(c);}

测试结果

CLOCKS_PER_SEC:1000000GET Time used:190.000000 ms.SET Time used:70.000000 ms. 

Java测试代码

import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.Date;import redis.clients.jedis.Jedis;public class JedisTest {	public static void main(String[] args)	{		Jedis jedis = new Jedis("10.100.211.232");				String f = "/tmp/e2.txt.backup";				try		{			File file = new File(f);			BufferedReader reader = new BufferedReader(new FileReader(file));			String data = reader.readLine();			reader.close();						Date start = new Date();			for(int i=0; i<10; i++)			{				jedis.set(i+"", data);			}			Date end = new Date();			System.out.println("Set used(ms):"+(end.getTime()-start.getTime()));						start = new Date();			for(int i=0; i<10; i++)			{				String v = jedis.get(i+"");			}			end = new Date();			System.out.println("Get used(ms):"+(end.getTime()-start.getTime()));					}catch (Exception e)		{			e.printStackTrace();		}		jedis.disconnect();	}}

测试结果

Set used(ms):1212Get used(ms):1437

6.总结

redis效率还是非常高的,读写1M数据的数据,耗时都在10ms左右。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:十分简单的redis使用说明及性能测试

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址