redis学習記録
23337 ワード
今日はRedisを簡単に勉強して、Redisの基本的な使用を記録しました.公式サイト:https://redis.io中国語のサイトhttp://www.redis.net.cn/
ファイルの説明:redis.windows.conf:プロファイルredis-cli.Exce:redisクライアントredis-server.Exce:redisサーバ側
一、概念Redisは高性能のNOSQLシリーズの非関係型データベース(NOSQL、Not Only SQL)である.メモリデータベース非関係型データベースの利点:(1)性能NOSQLはキー値対に基づくものであり、表中のプライマリ・キーと値の対応関係を想像することができ、かつSQL層の解析を必要としないため、性能が非常に高い.(2)拡張性も同様にキー値対に基づくため、データ間に結合性がないため、非常に水平に拡張しやすい.
redisの典型的な応用は:キャッシュで、主に大量のデータを処理する高アクセス負荷データモデルに用いられる:キー値対の優位性:高速クエリーの劣勢:格納されたデータは構造化に欠けている
一般的なNOSQL製品は主にキーペア(key-value)ストレージデータベース(典型的なアプリケーション:キャッシュ)、カラムストレージデータベース(典型的なアプリケーション:分散ファイルシステム)、ドキュメント型データベース(典型的なアプリケーション:Webアプリケーション(Key-Valueと類似、Valueは構造化)、グラフィックデータベースに分けられます.(典型的な応用:ソーシャルネットワーク).redisはC言語で開発されたオープンソースの高性能キー値対である.(key-value)データベースは、公式にテストデータを提供し、50個の同時実行100000個の要求があり、読み取り速度は110000回/s、書き込み速度は81000回/sであり、Redisは複数のキー値データ型を提供することによって異なるシーンでのストレージニーズに適応し、これまでRedisがサポートしてきたキー値データ型は以下の通りである:keyはStringタイプであり、valueは5種類の異なるデータ構造がある文字列タイプ:String ハッシュタイプhash:mapフォーマット リストタイプlist:linkedlistフォーマット、重複要素 をサポートコレクションタイプset:重複要素は許可されていません 秩序化集合タイプsortedset:重複要素は許可されず、要素には順序 がある.
二、基本命令
文字列タイプstring 1.ストレージ:set key value 2.取得:get key 3.削除:del keyハッシュタイプhash 1.ストレージ:hset key field value[hset(「user」,「name」,「lisi」);]3.取得:hget key field:指定したfieldに対応する値hgetall keyを取得:すべてのfieldとvalue 4を取得する.削除:hdel key field**リストタイプlist:**リストのヘッダー(左)または末尾(右)に要素を追加できます.1.追加:1.lpush key value:リストの左表(左から追加)2)に要素を追加します.rpush key value:リストの右側(右側から追加)に要素を追加します.取得:lrange key start end:範囲取得3.削除:lpop key:リストの一番左の要素を削除し、要素をrppop keyに戻します:リストの一番右の要素を削除し、要素を集合タイプsetに戻します:繰り返し要素1を許可しません.ストレージ:sadd key value 2.取得:smembers key:setセット内のすべての要素を取得します.削除:srem key value:setコレクション内のエレメント**整列コレクションタイプsortedset:**重複エレメントは許可されず、エレメントに順序がある.各要素にはdoubleタイプのスコアが関連付けられます.redisは、集合内のメンバーをスコアで小さいものから大きいものに並べ替えるものです.1.ストレージ:zadd key score value 2.取得:zrange key start end[withscores]3.削除:zrem key value汎用コマンド1.keys:すべてのキーをクエリーします.type key:取得キーに対応するvalueのタイプ3.del key:指定したkey value 3、永続化を削除 redisはメモリデータベースで、redisサーバが再起動し、コンピュータの再起動を取得すると、データが失われ、redisメモリのデータをハードディスクのファイルに永続化して保存することができます.プロファイル:redis.windows.conf redis永続化メカニズム:1):RDB:デフォルトで、構成する必要はありません.save 900 1[after 900 sec(15 min)if at least 1 key]save 300 1 save 60 10000操作手順:1.redisを編集します.windows.confファイル2.Redisサーバを再起動し、プロファイル名(cmdで起動)を指定します->redis.server.exe redis.windows.conf 2)AOF:ログ記録の方式で,各コマンドの操作を記録することができる.コマンド操作のたびに、データ編集redisを永続化することができる.windows.confファイル:appendonly no(aofを閉じる)—>appendonly yes(aofを開く)appendfsync always:操作ごとに永続化appendfsync everysec:1秒おきに永続化appendfsync no:永続化しない
四、JavaクライアントJedis Jedis:Javaがredisデータベースを操作するツールで、JDBCと似ていて、JDBCより操作が簡単です.1.接続Jedis jedis=new Jedis(「localhost」,6379)を取得する.2.操作jedis.set(「username」,「呉」);3.接続jedisを閉じる.close();
テスト:
jedisを使用してプールを接続するには、次の手順に従います.
最適化:接続プールツールクラスjedis接続プールツールクラスの使用:
JedisPoolUtils.java:
プロファイルproperties:
Jedis詳細構成:
ファイルの説明:redis.windows.conf:プロファイルredis-cli.Exce:redisクライアントredis-server.Exce:redisサーバ側
一、概念Redisは高性能のNOSQLシリーズの非関係型データベース(NOSQL、Not Only SQL)である.メモリデータベース非関係型データベースの利点:(1)性能NOSQLはキー値対に基づくものであり、表中のプライマリ・キーと値の対応関係を想像することができ、かつSQL層の解析を必要としないため、性能が非常に高い.(2)拡張性も同様にキー値対に基づくため、データ間に結合性がないため、非常に水平に拡張しやすい.
redisの典型的な応用は:キャッシュで、主に大量のデータを処理する高アクセス負荷データモデルに用いられる:キー値対の優位性:高速クエリーの劣勢:格納されたデータは構造化に欠けている
一般的なNOSQL製品は主にキーペア(key-value)ストレージデータベース(典型的なアプリケーション:キャッシュ)、カラムストレージデータベース(典型的なアプリケーション:分散ファイルシステム)、ドキュメント型データベース(典型的なアプリケーション:Webアプリケーション(Key-Valueと類似、Valueは構造化)、グラフィックデータベースに分けられます.(典型的な応用:ソーシャルネットワーク).redisはC言語で開発されたオープンソースの高性能キー値対である.(key-value)データベースは、公式にテストデータを提供し、50個の同時実行100000個の要求があり、読み取り速度は110000回/s、書き込み速度は81000回/sであり、Redisは複数のキー値データ型を提供することによって異なるシーンでのストレージニーズに適応し、これまでRedisがサポートしてきたキー値データ型は以下の通りである:keyはStringタイプであり、valueは5種類の異なるデータ構造がある
二、基本命令
文字列タイプstring 1.ストレージ:set key value 2.取得:get key 3.削除:del keyハッシュタイプhash 1.ストレージ:hset key field value[hset(「user」,「name」,「lisi」);]3.取得:hget key field:指定したfieldに対応する値hgetall keyを取得:すべてのfieldとvalue 4を取得する.削除:hdel key field**リストタイプlist:**リストのヘッダー(左)または末尾(右)に要素を追加できます.1.追加:1.lpush key value:リストの左表(左から追加)2)に要素を追加します.rpush key value:リストの右側(右側から追加)に要素を追加します.取得:lrange key start end:範囲取得3.削除:lpop key:リストの一番左の要素を削除し、要素をrppop keyに戻します:リストの一番右の要素を削除し、要素を集合タイプsetに戻します:繰り返し要素1を許可しません.ストレージ:sadd key value 2.取得:smembers key:setセット内のすべての要素を取得します.削除:srem key value:setコレクション内のエレメント**整列コレクションタイプsortedset:**重複エレメントは許可されず、エレメントに順序がある.各要素にはdoubleタイプのスコアが関連付けられます.redisは、集合内のメンバーをスコアで小さいものから大きいものに並べ替えるものです.1.ストレージ:zadd key score value 2.取得:zrange key start end[withscores]3.削除:zrem key value汎用コマンド1.keys:すべてのキーをクエリーします.type key:取得キーに対応するvalueのタイプ3.del key:指定したkey value 3、永続化を削除
四、JavaクライアントJedis Jedis:Javaがredisデータベースを操作するツールで、JDBCと似ていて、JDBCより操作が簡単です.1.接続Jedis jedis=new Jedis(「localhost」,6379)を取得する.2.操作jedis.set(「username」,「呉」);3.接続jedisを閉じる.close();
テスト:
@Test
public void test1(){
//1.
Jedis jedis = new Jedis("localhost",6379);
//2.
//hash
jedis.hset("user","name","lisi");
jedis.hset("user","age","23");
jedis.hset("user","gender","male");
// hash map
Map<String, String> user = jedis.hgetAll("user");
System.out.println(user);
System.out.println("---------------");
// map
for(Map.Entry<String,String> entry:user.entrySet()){
String mapkey = entry.getKey();
String mapValue = entry.getValue();
System.out.println(mapkey+":"+mapValue);
}
//// map
user.forEach(
(key,value) -> {
System.out.println(key+":"+value);
}
);
//3.
jedis.close();
//list
// jedis.lpush("mylist","a","b","c");
// jedis.rpush("mylist","a","b","c");
// List mylist = jedis.lrange("mylist", 0, -1);
// System.out.println(mylist);
// //list ,
// String mylist1 = jedis.lpop("mylist");
// System.out.println(mylist1);
// String mylist2 = jedis.rpop("mylist");
// System.out.println(mylist2);
}
jedisを使用してプールを接続するには、次の手順に従います.
@Test
public void test2(){
//0.
JedisPoolConfig config = new JedisPoolConfig();
//
config.setMaxTotal(50);
//
config.setMaxIdle(10);
//1. Jedis
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
//2.
Jedis resource = jedisPool.getResource();
//3.
resource.set("hhahah","hhhh");
//4.
resource.close();
}
最適化:接続プールツールクラスjedis接続プールツールクラスの使用:
/**
* jedis
*/
@Test
public void test3(){
//
Jedis resource = JedisPoolUtils.getJedis();
//3.
resource.set("hello","world");
//4.
resource.close();
}
JedisPoolUtils.java:
/**
* JedisPool
* ,
*
*/
public class JedisPoolUtils {
private static JedisPool jedisPool;
// , ,
static{
//
//
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
// Properties
Properties pro = new Properties();
//
try {
pro.load(is);
} catch (IOException e) {
e.printStackTrace();
}
// , JedisPoolConfig
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
// JedisPool
jedisPool = new JedisPool(config,pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
}
/**
*
*/
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
プロファイルproperties:
host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10
Jedis詳細構成:
#
redis.pool.maxTotal=1000
# idel
redis.pool.maxIdle=100
# idel
redis.pool.minIdle=50
# ,
redis.pool.maxWaitMillis=10000
# borrow Object ,
redis.pool.testOnBorrow=true
# return Object ,
redis.pool.testOnReturn=true
#“ ” , , 。 , “ ”。 -1.
redis.pool.timeBetweenEvictionRunsMillis=30000
# “ ” , ;
redis.pool.testWhileIdle=true
# “ ” , 。 3.
redis.pool.numTestsPerEvictionRun=50
#redis IP
redis.ip=xxxxxx
#redis Port
redis1.port=6379