linuxシステムredisデータベース

7205 ワード

1.ネットワーク三高:高同時、高負荷、高拡張
NoSQLデータベースの4つの分類:
キー値(key-value)ストレージデータベース
カラムストレージデータベース
ドキュメント型データベース
グラフィックデータベース
2.NoSQLの特徴:ビッグデータアクセスにおいて関係型データベースとは比べものにならない性能優勢を備える
1.拡張性2.ビッグデータ量、高性能3.柔軟なデータモデル4.高可用性
3.Redisとは?
RedisはC言語で開発されたオープンソースの高性能キー値対データベースを使用して、さまざまなキー値データ型を提供することで、異なるシーンでのストレージニーズに適応しています.これまでRedisがサポートしてきたキー値タイプは以下の通りです.
1.文字列タイプ2.ハッシュタイプ3.リストタイプ4.集合タイプ5.整列集合タイプ(set)
4.redisのLinuxへのインストール
1)redisコンパイルをインストールするC環境,yum install gcc-c++
2)redis-2.6.16.tar.gzをLinuxシステムにアップロード
3)/usr/local下tar-xvf redis-2.6.16に解凍する.tar.gz -C/usr/local
4)redis-2.6.16ディレクトリに入り、makeを使用してredisをコンパイルする
5)redis-2.6.16ディレクトリでmake PREFIX=/usr/local/redis installコマンドを使用して/usr/local/redisにインストール
6)redis-2.6.16のredisをコピーする.confからインストールディレクトリredisへ
7)redisを起動binでコマンドredis-server redisを実行する.confからインストールディレクトリredisへ
8)8)redisへのリモート接続が必要な場合は、linuxファイアウォールでredisポート6379を構成して開発する必要があります.
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/etc/rc.d/init.d/iptables save
サーバが起動し、リモート接続のウィンドウが開き、cd/usr/local/redis/bin
./redis-cliは、データベースset username zhangsan,get usernameにリンクされていることに相当します.
9)サーバps-ef|grep redisを閉じてサーバプロセス番号を表示し、kill-9+プロセス番号
10)redisに入る.confファイルのdaemonizeをNoからyesに変更するとバックグラウンドが起動し、./redis-server redis.confオープンサーバ
5.javaリモートリンクredisデータベース
プロジェクトにcommons-pool 2-2.3をインポートする.jar,jedis-2.7.0.JArパッケージ
public class JedisTest {
	//  Java    redis   
	@Test
	public void test1(){
		//1      
		Jedis jedis=new Jedis("192.168.2.110",6379);
		//2.    
		String username=jedis.get("username");
		System.out.println(username);
		//3.  
		jedis.set("addr","  ");
		System.out.println(jedis.get("addr"));
	}
}
6.            redis        
    redis.properties
redis.maxIdle=30
redis.minIdle=10
redis.maxTotal=100
redis.url=192.168.2.110
redis.port=6379
   
public class JedisPoolUtils {
	private static JedisPool pool=null;
	static{
		//      
		InputStream in=JedisPoolUtils.class.getClassLoader().getResourceAsStream("redis.properties");
		Properties pro=new Properties();
		try {
			pro.load(in);
		} catch (IOException e) {
			e.printStackTrace();
		}
		//      
		JedisPoolConfig poolConfig=new JedisPoolConfig();
		poolConfig.setMaxIdle(Integer.parseInt(pro.get("redis.maxIdle").toString()));//      
		poolConfig.setMinIdle(Integer.parseInt(pro.get("redis.minIdle").toString()));//      
		poolConfig.setMaxTotal(Integer.parseInt(pro.get("redis.maxTotal").toString()));//     
		//1    redis    
		pool=new JedisPool(poolConfig,pro.getProperty("redis.url"),Integer.parseInt(pro.get("redis.port").toString()));
	}
//  jedis     
	public static Jedis getJedis(){
		return pool.getResource();
	}
	public static void main(String[] args){
		Jedis jedis=getJedis();
		System.out.println(jedis.get("xxx"));
	}
}
)incr key:指定したkeyのvalue原子性を1.キーが存在しない場合、その初期値
は0で、incr以降の値は1です.valueの値がhelloなどの整数に変換できない場合、この操作は実行されます.
ローが失敗し、対応するエラーメッセージが返されます.
5)decr key:指定したkeyのvalue原子性を1.キーが存在しない場合、その初期値
は0で、incr以降の値は-1です.valueの値がhelloなどの整数に変換できない場合、この操作は実行されます.
ローが失敗し、対応するエラーメッセージが返されます.
6)incrby key increment:指定したkeyのvalue原子性をincrementに追加します.
keyは存在せず、器の初期値は0であり、incrbyの後、この値はincrementである.値を変換できない場合
整数、helloのように失敗し、エラー情報incrby num 9を返す.
7)decrby key decrement:指定したkeyのvalue原子性をdecrementだけ減らし、
このkeyは存在せず、器の初期値は0であり、decrbyの後、この値はdecrementである.値が指定できない場合
整数に変換し、helloのように失敗し、エラーメッセージdecrby num 3を返します.
8)append key value:そのkeyが存在する場合、元のvalueの後にその値を追加する.もし
key
存在しない場合はkey/valueを再作成します
7.格納hash
RedisのhashタイプはString keyとstring valueを持つmapコンテナと見なすことができるので,このタイプは値オブジェクト情報を格納するのに非常に適している.
hset key field value:指定したkeyにfield/valueペアを設定します.たとえば、hset myhash name tom;
hget key field:指定したkeyのfieldの値を返します.たとえば、hget myhash name
hmget key fields:key内の複数のfieldの値を取得します.たとえば、hmget myhash name age;
hgetall key:hgetall myhashなど、key内のすべてのキー値ペアを取得します.
hdel key field:1つ以上のフィールドを削除できます.戻り値は、hdel myhash nameなどの削除されたフィールドの数です.
del key:list全体を削除します.たとえば、del myhash
hincyby key field increament:keyのfieldの値を設定してincrementを増加します.たとえば、hincrby myhash age 5;
hexists key field:指定したkeyのfieldが存在するかどうかを判断します.たとえば、hexists myhash name;
hlen key:keyに含まれるfieldの数を取得します.たとえば、hlen myhash
hkeys key:hkeys keyなど、すべてのkeyを取得します.
8.保存リスト
Listタイプは、挿入順に並べ替えられた文字列チェーンテーブルで、ヘッダ(left)とテール(right)に新しい要素を挿入できます.
lpush key values:例えばlpush mylist a b c
rpush key values:右から要素を追加
lrange key start end:チェーンテーブルのstartからendまでの要素の値、例えばlrange mylist 0-1を取得します.
lpop key:指定したkeyに関連付けられたチェーンテーブルの最初の要素(lpop mylistなど)を返してポップアップします.
llen key:指定したkeyに関連付けられたチェーンテーブルの要素の数を返します.たとえばllen mylist
lpushx key value:パラメータで指定したkeyが存在する場合のみ、関連するlistのヘッダにvalueを挿入し、存在しない場合はlpushx mylist xmlプロファイルで変更
lrem key count value:count個の値がvalueの要素を削除し、count値が0未満の場合、lrem mylist 2 aなどの末尾から頭に向かって遍歴して削除します.
lset key index value:チェーンテーブルのindexの足標の要素の値を設定し、0は頭-1が尾を表し、例えばlset mylist 0 aaa
linsert key before/after x value:x要素の前または後にvalueを挿入します.たとえば、linsert mylist before a xxx
rpoplpush resource destination:チェーンテーブルの末尾要素をヘッダにポップアップして追加
9.ストレージset
setコレクションで重複する要素は許可されていません
sadd key value:setにデータを追加し、重複を追加できません
srem key members:setで指定したメンバーを削除srem myset 1 2
smembers key:setのすべてのメンバーを取得し、smembers myset
sismember key member:パラメータで指定したメンバーがこのsetにいるかどうかを判断し、1は0が存在することを示し、sismember myset a
sdiff mya 1 mya 2:key 1とKey 2の差のあるメンバーを返し、差セットを返します
sinter key 1 key 2:交差を返す
sunion key 1 key 2:並列セットを返す
scard key:set内のメンバーの数を取得し、scard myset
srandmember key:setのメンバーをランダムに返す
sdiffstore destination key 1:key 1.key 2の異なるメンバーがdestinationに格納されます
10.sortedsetを格納
zadd key score member score 2 member 2:すべてのメンバーとそのメンバーのスコアを保存しますよsorted-set
zscore key member:指定したメンバーのスコアを返します.
zcard key:コレクション内のメンバー数の取得
zrem key member:コレクションで指定したメンバーを除去する
zrevrange key start stop:要素スコアが大きい順から小さい順にインデックスを返しますstartからstopまでのすべての要素
zremrangebyrankkey start stop:ランキング範囲で要素を削除
zremrangebyscore key min max:スコア範囲で要素を削除する
keys*:任意の1文字以上を表す
del key 1:指定したKeyを削除
exists key:そのkeyが存在するか否かを判断し、1は存在し、0は存在しない
rename key newkey:現在のKeyの名前を変更する
expire key:有効期限を秒単位で設定
ttl key:そのkeyの残りのタイムアウト時間を取得する
type key:指定したkeyのタイプを取得する
11.マルチデータベース
1つのredisインスタンスには、最大16個のデータベースが提供されます.下付きは0から15、クライアントはデフォルトで0番目のデータベースにリンクします.selectでそのデータベースをリンクするかを選択できます.
move newkey 1:現在のライブラリのkeyを1番ライブラリに移植する
info:サーバの情報と統計を取得する
flushdb:現在選択されているデータベースのすべてのkeyを削除
12.メッセージの購読と配布
subscribe channel:サブスクリプションチャネル
psubscribe channel*:一括購読チャンネル
publish channel content:制定されたチャンネルでメッセージを発表する
12.redisトランザクション
Multi:トランザクションがトランザクションの開始をマークするためにオープンし、その後実行されるコマンドはexecが実行されるまで原子によって実行されないコマンドキューに格納されます.
exec:トランザクションのコミット
discard:トランザクションロールバック
13.redis持続化
redisは、RDB方式、AOF方式の2つの方式の持続化をサポートし、そのうちの1つを単独で使用したり、両方を組み合わせて使用したりすることができる.
(1)RDB持続化
このメカニズムは、メモリ内のデータセットスナップショットを指定した間隔でディスクに書き込むメカニズムです.
(2)AOF持続化
このメカニズムは、サーバが処理した書き込み操作をログ形式で記録し、redisサーバが起動したときにファイルを読み込んでデータベースを再構築し、起動後のデータベースのデータが完全であることを保証します.