十分简单的redis使用说明及性能测试
转载请注明出处:http://blog.csdn.net/jmppok/article/details/18085181 redis相比很多人都知道,是一个内存式的key-value数据库,存取速度极快,使用非常简单,支持多种语言。本文对其使用进行一个简要说明,并进行简单测试。 1.下载与编译 可以从redis官
转载请注明出处:http://blog.csdn.net/jmppok/article/details/18085181
redis相比很多人都知道,是一个内存式的key-value数据库,存取速度极快,使用非常简单,支持多种语言。本文对其使用进行一个简要说明,并进行简单测试。
1.下载与编译
可以从redis官网下载最新的源码包:http://www.redis.io/
编译十分简单make既可。
2.redis安装与配置
实际上并不需要安装。redis编译后会在src目录下生成redis-server,它是一个可执行文件,即启动redis服务。不过它需要一个配置文件。配置文件写法网上很多了,这里直接给出一个示例:
daemonize yes pidfile /tmp/redis/var/redis.pid port 6379 timeout 300 loglevel debug logfile /tmp/redis/var/redis.log databases 16 save 900 1 save 300 10 save 60 10000 rdbcompression yes dbfilename dump.rdb dir /tmp/redis/var/ appendonly no appendfsync always #glueoutputbuf yes #shareobjects no #shareobjectspoolsize 1024
然后直接运行./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中获取所需数据
代码如下:
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");
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 <stdio.h> #include "hiredis.h" #include <string.h> #include <time.h> 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:1000000 GET 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):1212 Get used(ms):1437
6.总结
redis效率还是非常高的,读写1M数据的数据,耗时都在10ms左右。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisはハッシュテーブルを使用してデータを保存し、文字列、リスト、ハッシュテーブル、コレクション、注文コレクションなどのデータ構造をサポートします。 Redisは、スナップショット(RDB)を介してデータを維持し、書き込み専用(AOF)メカニズムを追加します。 Redisは、マスタースレーブレプリケーションを使用して、データの可用性を向上させます。 Redisは、シングルスレッドイベントループを使用して接続とコマンドを処理して、データの原子性と一貫性を確保します。 Redisは、キーの有効期限を設定し、怠zyな削除メカニズムを使用して有効期限キーを削除します。

Redis-Serverが見つからない問題を解決するための手順:インストールを確認して、Redisが正しくインストールされていることを確認します。環境変数Redis_hostとredis_portを設定します。 Redis Server Redis-Serverを起動します。サーバーがRedis-Cli pingを実行しているかどうかを確認します。

Redisのすべてのキーを表示するには、3つの方法があります。キーコマンドを使用して、指定されたパターンに一致するすべてのキーを返します。スキャンコマンドを使用してキーを繰り返し、キーのセットを返します。情報コマンドを使用して、キーの総数を取得します。

Redisソースコードを理解する最良の方法は、段階的に進むことです。Redisの基本に精通してください。開始点として特定のモジュールまたは機能を選択します。モジュールまたは機能のエントリポイントから始めて、行ごとにコードを表示します。関数コールチェーンを介してコードを表示します。 Redisが使用する基礎となるデータ構造に精通してください。 Redisが使用するアルゴリズムを特定します。

Redis指令を使用するには、次の手順が必要です。Redisクライアントを開きます。コマンド(動詞キー値)を入力します。必要なパラメーターを提供します(指示ごとに異なります)。 Enterを押してコマンドを実行します。 Redisは、操作の結果を示す応答を返します(通常はOKまたは-ERR)。

次の2つの方法を使用して、Redisのデータをクリアすることができます。Flushallコマンド:データベース内のすべてのキーと値を削除します。 Config ResetStatコマンド:データベースのすべての状態(キー、値、その他の統計を含む)をリセットします。

Redisサーバーを起動する手順には、以下が含まれます。オペレーティングシステムに従ってRedisをインストールします。 Redis-Server(Linux/Macos)またはRedis-Server.exe(Windows)を介してRedisサービスを開始します。 Redis-Cli ping(Linux/macos)またはRedis-Cli.exePing(Windows)コマンドを使用して、サービスステータスを確認します。 Redis-Cli、Python、node.jsなどのRedisクライアントを使用して、サーバーにアクセスします。
