ホームページ >バックエンド開発 >PHPチュートリアル >Windows での Redis のインストールと構成、および phpredis を使用した php 拡張機能
1. まず Redis データベースをインストールしてダウンロードします
ダウンロード アドレス: http://code.google.com/p/servicestack/wiki/RedisWindowsDownload
現在バージョン 2.02 ですが、私の 115 からもダウンロードできます。ネットワークディスク: http://115.com/lb/5lbf215
2. インストールファイルを解凍します。次のディレクトリを取得します
redis-check-dump.exe: ローカル データベース チェック
redis-check-aof.exe: 更新ログ チェック
redis-benchmark exe : N 個のクライアントによって同時に送信される M SET/GET クエリをシミュレートするために使用されるパフォーマンス テスト (Apache の ab ツールと同様)
redis.conf 設定ファイル
3. Redis サービスを開始します (conf ファイルは次のように指定します)。構成ファイル (指定しない場合のデフォルト):
D:redis-2.0.2>redis-server.exe redis.conf
4. 起動 cmd ウィンドウは、閉じた後、常に開いている必要があります。シャットダウンされる。この時点で、サービスが開き、クライアントをセットアップするために別のウィンドウが開きます:
D: redis-2.0.2 & gt; redis-cli.exe -H 202.117.16.133 -P 6379
プレイを開始できます:
1、最初に phpredis.dll 拡張機能をダウンロードします。ダウンロード アドレス: https://github.com/nicolasff/phpredis/downloads
phpinfo を使用して現在の TS vc9 を確認します。すると、ダウンロードされたバージョンは ts バージョン phpredis_5.4_vc9_ts.7z nts バージョン phpredis_5.4_vc9_nts.7z に対応します
2. 解凍後、2 つのファイルが得られるので、その 2 つのファイルを php ディレクトリにコピーします。
3. php.ini ファイルを変更します。拡張機能を追加します extension
extension=php_igbinary.dll
extension=php_redis.dll
4. Apache を再起動し、phpinfo インターフェイスを表示します。以下はインストールが成功したことを意味します
🎜 🎜 5. phpredis hello word Start your redis use🎜🎜 🎜 🎜
<?php $redis = new Redis(); //redis对象 $redis->connect("192.168.60.6","6379"); //连接redis服务器 $redis->set("test","Hello World"); //set字符串值 echo $redis->get("test"); //获取值?>🎜 🎜🎜 phpでredisを操作するための詳細マニュアルです。中国語マニュアル: http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html🎜🎜redis 設定ファイルの詳細な説明。以下は http://www.cnblogs.com/wenanry からの抜粋です/archive /2012/02/26/2368398.html 🎜🎜ネチズンの皆さん、共有してくれてありがとう。 🎜 🎜1. Redis はデフォルトではデーモン プロセスとして実行されません。この設定項目を使用して変更し、デーモン プロセスを有効にすることができます🎜 🎜 daemonize no🎜 2. Redis がデーモン プロセスとして実行されると、次のようになります。デフォルトの pid /var/run/redis.pid ファイルは pidfile で指定できます 🎜 🎜 pidfile /var/run/redis.pid🎜 3. Redis リスニング ポートを指定します。 デフォルトのポートは 6379 です。著者はその理由を次のように説明しています。彼のブログ投稿の 1 つ 6379 がデフォルトのポートとして選択されています。6379 は電話ボタンの MERZ に対応する番号であり、MERZ はイタリアの歌手 Alessia Merz の名前から取られています 🎜 🎜 ポート 6379🎜 🎜4. 🎜 bind 127.0.0.1🎜 🎜5. 接続を閉じる前にクライアントが長時間アイドル状態にある場合、0 に指定すると機能がオフになります 🎜 🎜 Timeout 300 🎜 🎜6. Redis のログレベルを指定します。デバッグ、詳細、通知、警告の合計 4 つのレベルをサポートします。デフォルトは冗長です🎜 ログレベル詳細🎜 7. Redis がデーモン モードで実行するように構成されている場合、デフォルトは標準出力です。ここでモードが標準出力として設定されている場合、ログは /dev/null🎜 ログファイル stdout🎜 に送信されます。デフォルトのデータベースは 0 です。SELECT ccba59bbdb8214500b1cca8a72093b37 コマンドを使用して指定できます。接続上のデータベース ID 🎜 🎜 データベース 16🎜 🎜9. 操作では、データをデータ ファイルに同期するだけで、4cc236ec78fcead8e99e0c3dfdb87588🎜 🎜 Redis のデフォルト設定ファイルには 3 つの条件があります: 🎜 🎜 save 900 1🎜
Save 300 10
Save 60 10000
は、それぞれ 900 秒 (15 分) 以内に 1 回の変更、300 秒 (5 分) 以内に 10 回の変更、60 秒以内に 10,000 回の変更を意味します。
10. ローカル データベースにデータを保存するときにデータを圧縮するかどうかを指定します。デフォルトでは、Redis は LZF 圧縮を使用します。CPU 時間を節約したい場合は、このオプションをオフにします。データベース ファイルが巨大になる
rdbcompression はい
11. ローカル データベース ファイル名を指定します。デフォルト値は dump.rdb です
dbfilename dump.rdb
12. ローカル データベース ストレージ ディレクトリを指定します
dir ./
13. ローカル マシンがスラブ サービスの場合、マスター サービスを設定します。Redis が起動すると、マスター
slaveof 885bfb4ff5ca07b2526cbc210fcbc35914.サービスはパスワードで保護されており、マスターに接続するためのスラブ サービスのパスワードです
Masterauth e89d8186dfe17d1f70030d3fa2b7ff66
15. Redis 接続パスワードを設定する場合、クライアントは を通じてパスワードを提供する必要があります。 Redis に接続するときの AUTH cb1ebc435675187bdcfb539b370c2e37 コマンドはデフォルトでオフになりますrequirepass foabared
16. Redis が同時に接続できるクライアントの最大数を設定します。同時に開くことができるのは、Redis プロセスが開くことができるファイル記述子の最大数です。maxclients 0 が設定されている場合、制限はありません。クライアント接続の数が制限に達すると、Redis は新しい接続を閉じ、クライアントの最大数に達したというエラー メッセージをクライアントに返します。Redis の最大メモリ制限を指定すると、Redis はデータをロードします。メモリ内では、最大メモリに達した後、Redis は最初に期限切れまたは期限切れのキーをクリアしようとします。このメソッドが処理された後も、最大メモリ設定に達しているため、書き込み操作はできなくなりますが、読み取り操作は引き続き実行できます。 。 Redis の新しい VM メカニズムは、キーをメモリに保存し、値をスワップ領域に保存します
maxmemory 4d5e782727adce28d9e975bcb1fbc12c
18. Redis はデフォルトでデータがディスクに書き込まれるかどうかを指定します。オンにすると、停電中に一定期間データが失われる可能性があります。 Redis 独自の同期データ ファイルは上記の保存条件に従って同期されるため、一部のデータは一定期間のみメモリ内に存在します。デフォルトは noappendonly no
19 更新ログ ファイル名を指定します。デフォルトは appendonly.aof
appendfilename appendonly.aof
です。
no: の 3 つのオプション値があります。他の操作を示します システムはデータ キャッシュをディスクに同期します (高速)always: 各更新操作の後に fsync() を手動で呼び出してデータをディスクに書き込むことを意味します (低速、安全)
Everysec: 1 秒に 1 回同期することを意味します (妥協、デフォルト値)appendfsync eachsec
21. 仮想メモリ メカニズムを有効にするかどうかを指定します。デフォルト値は no です。簡単に説明すると、VM メカニズムはデータをページに保存し、Redis はアクセスの少ないページをスワップします。 、コールドデータがディスクにアクセスされ、多くのページがディスクからメモリに自動的にスワップアウトされます (Redis の VM メカニズムについては後の記事で詳しく分析します)
vm-enabled no
22.パス、デフォルト値は /tmp/redis.swap、複数の Redis インスタンスで共有することはできません
vm-swap-file /tmp/redis.swap
23. vm-max-memory より大きいデータはすべて仮想メモリに保存します。 , vm-max-memory 設定がどんなに小さくても、すべてのインデックス データはメモリに保存されます (Redis のインデックス データはキーです)。つまり、vm-max-memory が 0 に設定されている場合、すべての値が保存されます。実際にはディスク上に存在します。デフォルト値は 0
vm-max-memory 0
24 です。 Redis スワップファイルは複数のページに分割されていますが、1 つのページを複数のオブジェクトで共有することはできません。サイズは、保存されるデータのサイズに応じて設定する必要があります。非常に大きなオブジェクトを保存する場合は、ページ サイズを 32 バイトまたは 64 バイトに設定するのが最適です。不明な場合は、デフォルト値
vm-page-size 32
25 を使用してください。ページ テーブル (ページが空きであるか使用中であるかを示すビットマップ) を設定します。メモリに配置されると、毎回 8 ページが 1 バイトのメモリを消費します。
vm-pages 134217728
26. スワップ ファイルにアクセスするスレッドの数を設定します。 0 に設定すると、スワップ ファイルに対するすべての操作が実行されます。シリアルであるため、処理に長い時間がかかる可能性があります。デフォルト値は 4
vm-max-threads 4
27. 设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启
glueoutputbuf yes
28. 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
29. 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)
activerehashing yes
30. 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
include /path/to/local.conf
# Redis configuration file example# Note on units: when memory size is needed, it is possible to specifiy# it in the usual form of 1k 5GB 4M and so forth:## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes# 1gb => 1024*1024*1024 bytes## units are case insensitive so 1GB 1Gb 1gB are all the same.# By default Redis does not run as a daemon. Use 'yes' if you need it.# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.daemonize yes# When running daemonized, Redis writes a pid file in /var/run/redis.pid by# default. You can specify a custom pid file location here.pidfile /usr/local/redis/run/redis.pid# Accept connections on the specified port, default is 6379port 6379# If you want you can bind a single interface, if the bind option is not# specified all the interfaces will listen for incoming connections.##bind 192.168.20.12# Close the connection after a client is idle for N seconds (0 to disable)timeout 300# Set server verbosity to 'debug'# it can be one of:# debug (a lot of information, useful for development/testing)# verbose (many rarely useful info, but not a mess like the debug level)# notice (moderately verbose, what you want in production probably)# warning (only very important / critical messages are logged)loglevel verbose# Specify the log file name. Also 'stdout' can be used to force# Redis to log on the standard output. Note that if you use standard# output for logging but daemonize, logs will be sent to /dev/null#logfile stdoutlogfile ./logs/redis.log# Set the number of databases. The default database is DB 0, you can select# a different one on a per-connection basis using SELECT <dbid> where# dbid is a number between 0 and 'databases'-1databases 16################################ SNAPSHOTTING ################################### Save the DB on disk:## save <seconds> <changes>## Will save the DB if both the given number of seconds and the given# number of write operations against the DB occurred.## In the example below the behaviour will be to save:# after 900 sec (15 min) if at least 1 key changed# after 300 sec (5 min) if at least 10 keys changed# after 60 sec if at least 10000 keys changed## Note: you can disable saving at all commenting all the "save" lines.save 900 1save 300 10save 60 10000# Compress string objects using LZF when dump .rdb databases?# For default that's set to 'yes' as it's almost always a win.# If you want to save some CPU in the saving child set it to 'no' but# the dataset will likely be bigger if you have compressible values or keys.rdbcompression yes# The filename where to dump the DBdbfilename dump.rdb# The working directory.## The DB will be written inside this directory, with the filename specified# above using the 'dbfilename' configuration directive.## Also the Append Only File will be created inside this directory.## Note that you must specify a directory here, not a file name.dir ./data/################################# REPLICATION ################################## Master-Slave replication. Use slaveof to make a Redis instance a copy of# another Redis server. Note that the configuration is local to the slave# so for example it is possible to configure the slave to save the DB with a# different interval, or to listen to another port, and so on.## slaveof <masterip> <masterport># If the master is password protected (using the "requirepass" configuration# directive below) it is possible to tell the slave to authenticate before# starting the replication synchronization process, otherwise the master will# refuse the slave request.## masterauth <master-password>################################## SECURITY #################################### Require clients to issue AUTH <PASSWORD> before processing any other# commands. This might be useful in environments in which you do not trust# others with access to the host running redis-server.## This should stay commented out for backward compatibility and because most# people do not need auth (e.g. they run their own servers).## Warning: since Redis is pretty fast an outside user can try up to# 150k passwords per second against a good box. This means that you should# use a very strong password otherwise it will be very easy to break.## requirepass foobared################################### LIMITS ##################################### Set the max number of connected clients at the same time. By default there# is no limit, and it's up to the number of file descriptors the Redis process# is able to open. The special value '0' means no limits.# Once the limit is reached Redis will close all the new connections sending# an error 'max number of clients reached'.## maxclients 128# Don't use more memory than the specified amount of bytes.# When the memory limit is reached Redis will try to remove keys with an# EXPIRE set. It will try to start freeing keys that are going to expire# in little time and preserve keys with a longer time to live.# Redis will also try to remove objects from free lists if possible.## If all this fails, Redis will start to reply with errors to commands# that will use more memory, like SET, LPUSH, and so on, and will continue# to reply to most read-only commands like GET.## WARNING: maxmemory can be a good idea mainly if you want to use Redis as a# 'state' server or cache, not as a real DB. When Redis is used as a real# database the memory usage will grow over the weeks, it will be obvious if# it is going to use too much memory in the long run, and you'll have the time# to upgrade. With maxmemory after the limit is reached you'll start to get# errors for write operations, and this may even lead to DB inconsistency.## maxmemory <bytes>############################## APPEND ONLY MODE ################################ By default Redis asynchronously dumps the dataset on disk. If you can live# with the idea that the latest records will be lost if something like a crash# happens this is the preferred way to run Redis. If instead you care a lot# about your data and don't want to that a single record can get lost you should# enable the append only mode: when this mode is enabled Redis will append# every write operation received in the file appendonly.aof. This file will# be read on startup in order to rebuild the full dataset in memory.## Note that you can have both the async dumps and the append only file if you# like (you have to comment the "save" statements above to disable the dumps).# Still if append only mode is enabled Redis will load the data from the# log file at startup ignoring the dump.rdb file.## IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append# log file in background when it gets too big.appendonly yes# The name of the append only file (default: "appendonly.aof")appendfilename appendonly.aof# The fsync() call tells the Operating System to actually write data on disk# instead to wait for more data in the output buffer. Some OS will really flush# data on disk, some other OS will just try to do it ASAP.## Redis supports three different modes:## no: don't fsync, just let the OS flush the data when it wants. Faster.# always: fsync after every write to the append only log . Slow, Safest.# everysec: fsync only if one second passed since the last fsync. Compromise.## The default is "everysec" that's usually the right compromise between# speed and data safety. It's up to you to understand if you can relax this to# "no" that will will let the operating system flush the output buffer when# it wants, for better performances (but if you can live with the idea of# some data loss consider the default persistence mode that's snapshotting),# or on the contrary, use "always" that's very slow but a bit safer than# everysec.## If unsure, use "everysec".# appendfsync alwaysappendfsync everysec# appendfsync no################################ VIRTUAL MEMORY ################################ Virtual Memory allows Redis to work with datasets bigger than the actual# amount of RAM needed to hold the whole dataset in memory.# In order to do so very used keys are taken in memory while the other keys# are swapped into a swap file, similarly to what operating systems do# with memory pages.## To enable VM just set 'vm-enabled' to yes, and set the following three# VM parameters accordingly to your needs.vm-enabled no# vm-enabled yes# This is the path of the Redis swap file. As you can guess, swap files# can't be shared by different Redis instances, so make sure to use a swap# file for every redis process you are running. Redis will complain if the# swap file is already in use.## The best kind of storage for the Redis swap file (that's accessed at random)# is a Solid State Disk (SSD).## *** WARNING *** if you are using a shared hosting the default of putting# the swap file under /tmp is not secure. Create a dir with access granted# only to Redis user and configure Redis to create the swap file there.vm-swap-file /tmp/redis.swap# vm-max-memory configures the VM to use at max the specified amount of# RAM. Everything that deos not fit will be swapped on disk *if* possible, that# is, if there is still enough contiguous space in the swap file.## With vm-max-memory 0 the system will swap everything it can. Not a good# default, just specify the max amount of RAM you can in bytes, but it's# better to leave some margin. For instance specify an amount of RAM# that's more or less between 60 and 80% of your free RAM.vm-max-memory 0# Redis swap files is split into pages. An object can be saved using multiple# contiguous pages, but pages can't be shared between different objects.# So if your page is too big, small objects swapped out on disk will waste# a lot of space. If you page is too small, there is less space in the swap# file (assuming you configured the same number of total swap file pages).## If you use a lot of small objects, use a page size of 64 or 32 bytes.# If you use a lot of big objects, use a bigger page size.# If unsure, use the default :)vm-page-size 32# Number of total memory pages in the swap file.# Given that the page table (a bitmap of free/used pages) is taken in memory,# every 8 pages on disk will consume 1 byte of RAM.## The total swap size is vm-page-size * vm-pages## With the default of 32-bytes memory pages and 134217728 pages Redis will# use a 4 GB swap file, that will use 16 MB of RAM for the page table.## It's better to use the smallest acceptable value for your application,# but the default is large in order to work in most conditions.vm-pages 134217728# Max number of VM I/O threads running at the same time.# This threads are used to read/write data from/to swap file, since they# also encode and decode objects from disk to memory or the reverse, a bigger# number of threads can help with big objects even if they can't help with# I/O itself as the physical device may not be able to couple with many# reads/writes operations at the same time.## The special value of 0 turn off threaded I/O and enables the blocking# Virtual Memory implementation.vm-max-threads 4############################### ADVANCED CONFIG ################################ Glue small output buffers together in order to send small replies in a# single TCP packet. Uses a bit more CPU but most of the times it is a win# in terms of number of queries per second. Use 'yes' if unsure.glueoutputbuf yes# Hashes are encoded in a special way (much more memory efficient) when they# have at max a given numer of elements, and the biggest element does not# exceed a given threshold. You can configure this limits with the following# configuration directives.hash-max-zipmap-entries 64hash-max-zipmap-value 512# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in# order to help rehashing the main Redis hash table (the one mapping top-level# keys to values). The hash table implementation redis uses (see dict.c)# performs a lazy rehashing: the more operation you run into an hash table# that is rhashing, the more rehashing "steps" are performed, so if the# server is idle the rehashing is never complete and some more memory is used# by the hash table.## The default is to use this millisecond 10 times every second in order to# active rehashing the main dictionaries, freeing memory when possible.## If unsure:# use "activerehashing no" if you have hard latency requirements and it is# not a good thing in your environment that Redis can reply form time to time# to queries with 2 milliseconds delay.## use "activerehashing yes" if you don't have such hard requirements but# want to free memory asap when possible.activerehashing yes################################## INCLUDES #################################### Include one or more other config files here. This is useful if you# have a standard template that goes to all redis server but also need# to customize a few per-server settings. Include files can include# other files, so use this wisely.## include /path/to/local.conf# include /path/to/other.conf
后期更新redis 一些详细操作。谢谢。