Redisのアプリケーション入門[チュートリアル/概要]

エグゼクティブサマリー

プロジェクトは、確認コードを送信するためにユーザーを登録しているので、Redisのインメモリデータベースを学ぶ必要があるので、午後の予備的研究ではいくつかの時間を費やしました。このブログは、今日のRedisのの内容の概要を学習の本質に属しています。前またはこの記事を読んだ後見た後、あなたは自分自身に3つの質問を尋ねることができます:Redisのはなぜ使用は何のRedis / Redisのを使用しているもの(何)、ですか?(なぜ)、Redisのを使用する方法(どのように)。

  • Redisのブリーフ
  • Redisのインストールと簡単なアプリケーション
  • Jedis(Java用のRedis)
  • JedisPool(Jedisデータベース接続プール)
  • JedisUtil(Redisの簡単な操作ツールパッケージ)
    • jedis.properties
    • pulic静的Jedis getJedis()
    • 公共の静的な無効近い(Jedis jedis)
注意:JedisUtilデザインと、すべてのコードがブロガーブログブロガーの元、公園の部門からの完全な抜粋ではありません ロイ・新 ボーエン Jedis接続プール

簡単なRedisの

簡単なテキストの抜粋Baiduの百科事典

  • 機能
    • サポートネットワーク(リモート)
    • メモリベース
    • 可持久化
    • デイトジャスト
    • キーと値のデータベース
    • 複数の言語で利用可能

Redisのキーと値のストレージシステムです。ハッシュ(ハッシュタイプ) - とMemcachedのは、同様に、それは文字列(文字列)、リスト(一覧)、SET(セット)、ZSET(順序集合ソートセット)を含む、比較的保存された値の型をサポートしています。これらのデータ型は、追加/削除して、交差点や労働組合、その差よりリッチな操作で、プッシュ/ポップをサポートされており、これらの操作はアトミックです。これに基づき、Redisのは、並べ替えの異なるさまざまな方法をサポートしています。memcachedのと同じように、効率性を確保するために、データはメモリにキャッシュされています。Redisの差は、定期的にディスクに書き込まれたデータで更新されたり、追加のログファイルを書き込む動作を変更するために、そしてこれに基づいてマスタースレーブ(マスタとスレーブ)の同期を実現します。

Redisのは、キーと値の高性能データベースです。Redisのは、このようなmemcachedのキー/値ストアの不足を補うため、それはいくつかの状況では、リレーショナルデータベースに非常に良い補数を再生することができます大きく、表示されます。これは、Java、C / C ++、C#の、PHPやJavaScript、Perlやオブジェクト-C、Pythonの、ルビー、アーランと他のクライアント、非常に使いやすいを提供します。

Redisのは、マスター・スレーブの同期をサポートしています。データはサーバからプライマリサーバから任意の数に同期させることができ、サーバは他のサーバからプライマリ・サーバに関連付けられてもよいです。これは、ツリーRedisの単一の実行可能コピーすることができます。意図的にまたは意図せずに、データの書き込み動作を保存することができます。どこツリーからデータベース同期するように、パブリッシュ/サブスクライブ機構の完全な実装ので、チャネルにサブスクライブし、完全なメッセージマスターサーバー公開レコードを受信することができます。読み出し動作のための便利な同期の拡張性と冗長データ。

二つのRedisのインストールと簡単なアプリケーション

  • STEP2:インストールされている解凍
  • STEP3:サーバーを実行します
    • D:\プログラム\のRedis \ Redisの-SERVER.EXEのD:\プログラム\ Redisの\ redis.windows.confの#サーバーの実行中のRedis
  • step4.1:クライアントが呼び出すRedisの(アプリケーション)ストレージ/データ取得[文字列キーベースのキーと値のペア]
    • D:\プログラム\ Redisの\のRedisの-cli.exe -h 127.0.0.1 -p 6379#Redisのクライアントがサービスを呼び出します
>set myKey abc
OK
>get myKey
"abc"
  • step4.2:パスワードの問題
    • 現在のRedisのパスワードを設定していない見る:(以下の表示には、パスワードを示していません)
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
+ 设置密码(方式一)
127.0.0.1:6379> config set requirepass abcdefg
OK
    + 再次查看当前redis就提示需要密码:
127.0.0.1:6379> config get requirepass
(error) NOAUTH Authentication required.
+ 设置密码(方式二:永久)
    + 打开配置文件 : redis.conf(假定设置为123)
requirepass foobared
requirepass 123
    + 保存后重启redis即可
  • step4.3:リモートサービス呼び出し(パスワードが必要)
    • D:\プログラム\ Redisの\のRedisの-cli.exe -h <ホスト:127.0.0.1> -p <ポート:6379> -a:クライアントのRedis <パスワード123>#は、サービスを呼び出します

三Jedis(Java用のRedis)

  • jedis是官方首选的java客户端开发包
  • Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。
  • 在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。
  • 在企业中用的最多的就是Jedis,Jedis同样也是托管在github上
  • 项目地址:https://github.com/xetorthio/jedis
  • 下载jedis解压后得到jar包如下:java操作redis数据库API(Jedis)
  • 基本用法
//连接redis服务器,192.168.0.100:6379
String ip="192.168.0.100";
jedis = new Jedis(ip, 6379);
//权限认证
jedis.auth("password");
public class RedisTest {
    @Test
    public void jedisPropertiesTest(){
        Jedis jedis = JedisUtil.getJedis();
        Print.print("ss: " + jedis.get("ss"));//output: ss:2423235
        JedisUtil.close(jedis);
    }

    @Test// 基于字符串存储的基本测试
    public void baseTest(){
        Jedis jedis = new Jedis("127.0.0.1",6379);
        jedis.auth("123456");
        //设置数据
        jedis.set("zengtai","1125418540");
        jedis.set("wangchen","2153253568");
        jedis.close();//释放资源
        Print.print("保存数据完成");

        //获取数据
        Print.print("ss: " + jedis.get("ss"));//output: ss:2423235
        Print.print("xx: " + jedis.get("xx"));//output: xx:bhdjfsahsf
        jedis.close();//释放资源
        Print.print("获取数据完成");

        //删除数据
        jedis.del("xx");
        jedis.close();//释放资源
        Print.print("删除数据完成");
        Print.print("xx: " + jedis.get("wangchen"));//output: xx:null
    }

    @Test//数据结构测试(栈/队列)
    public void dataStructureTest(){
        Jedis jedis = new Jedis("127.0.0.1",6379);
        jedis.auth("123456");

        //设置数据
        jedis.lpush("charsList","E","D","C","B");//添加List:B(0) C(1) D(2) E(3)
        jedis.lpush("charsList","A");//往key对应list左侧插入一个元素
        jedis.rpush("charsList","F");//往key对应list左侧插入一个元素
        Print.print("rpop:"+jedis.rpop("charsList"));//output: rpop:F
        Print.print("lpop:"+jedis.lpop("charsList"));//output: lpop:A

        Print.print("charsList[0]:"+jedis.lindex("charsList",0));//output: charsList[0]:B
        Print.print("charsList[1]:"+jedis.lindex("charsList",1));//output: charsList[1]:C
        jedis.lset("charsList",0,"<X>");//修改key对应list指定下标index的元素
        Print.print("charsList[0]:"+jedis.lindex("charsList",0));//output: charsList[0]:<X>

        jedis.close();//释放资源
    }
}

四 JedisPool(Jedis数据库连接池)

+ [【推荐(JedisUtil/连接池JedisPool)】Jedis连接池](https://www.cnblogs.com/xinruyi/p/9391140.html)
//1 获得连接池配置对象,设置配置项
JedisPoolConfig config = new JedisPoolConfig();
// 1.1 最大连接数
config.setMaxTotal(30);
//1.2 最大空闲连接数
config.setMaxIdle(10);
//获得连接池
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);

Jedis jedis = null;
try {
    //3.获得核心对象
    jedis = jedisPool.getResource();
    //4.设置数据
    jedis.set("name", "xinruyi");
    //5.获得数据
    String name = jedis.get("name");
    System.out.println(name);
} catch (Exception e) {
    e.printStackTrace();
} finally {
    if (jedis != null) {
        jedis.close();
    }
}

//虚拟机关闭时,释放pool资源
if(jedisPool!=null){
    jedisPool.close();
}

五 JedisUtil(Redis简易封装的操纵工具)

实现Redis操纵(JedisUtil类)所依赖的工具有:

  • Redis数据库服务
  • Jedis(Redis for Java - API)
    • jedis是官方首选的java客户端开发包
    • Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持
      • 比如 java、C、C#、C++、php、Node.js、Go等
    • 在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis等
      • 其中,官方推荐使用Jedis和Redisson
    • 在企业中用的最多的就是Jedis,Jedis同样也是托管在github上
    • 地址:https://github.com/xetorthio/jedis
    • 下载jedis解压后得到jar包如下:java操作redis数据库API(Jedis)
  • JedisPool(Jedis连接池)
  • ResourceBundle(读取属性配置文件jedis.properties)
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.ResourceBundle;

public final class JedisUtil {
    private JedisUtil() {
    }

    private static JedisPool jedisPool;
    private static int maxtotal;
    private static int maxwaitmillis;
    private static String host;
    private static int port;
    private static int timeout;
    private static String auth;//密码

    /*读取 jedis.properties 配置文件*/
    static {
        ResourceBundle rb = ResourceBundle.getBundle("jedis");
        maxtotal = Integer.parseInt(rb.getString("maxtotal"));
        maxwaitmillis = Integer.parseInt(rb.getString("maxwaitmillis"));
        host = rb.getString("host");
        port = Integer.parseInt(rb.getString("port"));
        auth = rb.getString("auth");
        timeout = Integer.parseInt(rb.getString("timeout"));
    }

    /*创建连接池*/
    static {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(maxtotal);
        jedisPoolConfig.setMaxWaitMillis(maxwaitmillis);
        jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, auth);
    }

    /*获取jedis*/
    public static Jedis getJedis() {
        return jedisPool.getResource();
    }

    /*关闭Jedis*/
    public static void close(Jedis jedis) {
        if (jedis != null) {
            jedis.close();
        }
    }
}

jedis.properties [jedis(redis for java)连接池配置信息]

maxtotal=100
maxwaitmillis=3000
host=127.0.0.1
port=6379
auth=123456
timeout=1000

测试与示例

    @Test
    public void jedisPropertiesTest(){
        Jedis jedis = JedisUtil.getJedis();
        Print.print("aiqing: " + jedis.get("aiqing"));//output: aiqing:sdvwtrguyw32
        JedisUtil.close(jedis);//释放资源
    }

六 参考文献

おすすめ

転載: www.cnblogs.com/johnnyzen/p/11105406.html