エグゼクティブサマリー
プロジェクトは、確認コードを送信するためにユーザーを登録しているので、Redisのインメモリデータベースを学ぶ必要があるので、午後の予備的研究ではいくつかの時間を費やしました。このブログは、今日のRedisのの内容の概要を学習の本質に属しています。前またはこの記事を読んだ後見た後、あなたは自分自身に3つの質問を尋ねることができます:Redisのはなぜ使用は何のRedis / Redisのを使用しているもの(何)、ですか?(なぜ)、Redisのを使用する方法(どのように)。
- Redisのブリーフ
- Redisのインストールと簡単なアプリケーション
- Jedis(Java用のRedis)
- JedisPool(Jedisデータベース接続プール)
- JedisUtil(Redisの簡単な操作ツールパッケージ)
- jedis.properties
- pulic静的Jedis getJedis()
- 公共の静的な無効近い(Jedis 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のインストールと簡単なアプリケーション
- STEP1:インストールパッケージの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");
- Jedis API
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)
- Properties与ResourceBundle区别
- 参考文献
- 二者都可以读取属性文件中以key/value形式存储的键值对
- ResourceBundle读取属性文件时操作相对简单
- Properties与ResourceBundle区别
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);//释放资源
}