3

私はphpmemcachedクライアントを試していました。phpmemcachedでのset操作の圧縮はデフォルトでオンになっているようです。適度に大きな文字列データを設定しようとしgetましたが、telnetでコマンドを実行すると、取得した値はプレーンテキストのみでした。memcacheを使用して同じことを行うと、値が文字化け/判読できなくなります。telnetで統計を確認しただけではありません。結果は次のとおりです

memcache - compressed
bytes - 148
memcache - uncompressed
bytes - 285

memcached - uncompressed
bytes - 285
memcached - uncompressed
bytes - 285

ご覧のとおり、php memcacheを使用すると、50%の圧縮率が得られました。したがって、圧縮は実際に機能しました。ただし、php memcachedを使用しても、圧縮は行われませんでした。これは、以下を使用して明示的に圧縮をオンにした場合でも同様です。

$objMemcached->setOption(Memcached::OPT_COMPRESSION, true);  //default fastlz compression
OR
$objMemcached->setOption(Memcached::OPT_COMPRESSION, true);
$objMemcached->setOption(Memcached::OPT_COMPRESSION_TYPE, Memcached::COMPRESSION_ZLIB );

これを機能させるには、他のオプションを設定する必要がありますか?私はこのプロジェクトに3週間携わっていますが、圧縮が機能しない場合、上司はmemcacheからmemcachedへのこの移行を受け入れません。私はあなたが緊急性を理解することを望みます;)(kiddnig)。

バージョン:

memcached     - 1.4.5
php-memcached - 2.0.1
libmemcached  - 1.0.8

助けてください。

4

2 に答える 2

3

php.iniでmemcached.compression_thresholdを設定してみてください

memcached.compression_threshold = 100

次に、値を設定し、telnetを使用して確認します。

于 2012-10-19T12:10:04.847 に答える
2

参照用のmemcached.ini

memcached.ini

; Enable PECL memcached extension module

extension = memcached.so

; Use memcached as a session handler
; valid values: files, memcached
; the default value is memcached

;session.save_handler = "memcached"

; Comma separated list of servers to use for session storage
;session.save_path = "127.0.0.1:11211"

[memcached]
; Use session locking
; valid values: On, Off
; the default value is On

memcached.sess_locking = On

; Session spin lock retry wait time in microseconds
; Be carefull when setting this value.
; valid values: integers, where 0 is interpreted as default
; Negative values result in a reduced locking to a try lock.
; the default value is 150000

memcached.sess_lock_wait = 150000

; Session key prefix
; valid values: strings less than 219 bytes long
; the default value is "memc.sess.key."

memcached.sess_prefix = "memc.sess.key."

; Session binary mode

memcached.sess_binary = Off

; Compression type
; valid values: fastlz, zlib
; the default value is fastlz

memcached.compression_type = "fastlz"

; Compression factor
; Store compressed value only if the compression
; factor (saving) exceeds the set limit.
; Store compressed if:
; plain_len > comp_len * factor
; the default value is 1.3 (23% space saving)

memcached.compression_factor = "1.3"

; Compression threshold
; Do not compress serialized values below this threshold.
; the default value is 2000 bytes

memcached.compression_threshold = 100

; Default serializer for new memcached objects
; valid values: php, igbinary, json, json_array
; json - standard php JSON encoding. This serializer
; is fast and compact but only works on UTF-8
; encoded data and does not fully implement
; serializing. See the JSON extension.
; json_array - as json, but decodes into arrays
; php - the standard php serializer
; igbinary - a binary serializer
; the default value is igbinary

;memcached.serializer = "igbinary"
于 2012-10-19T12:46:12.537 に答える