2011年9月15日木曜日

redisコマンドチートシート

俺いっつも忘れるので。主にredis-cliの話です。
でも、これ書こうと思っていろいろ見てたら、さすがにだいたい覚えた感じ・・・。

redis 2.2 later想定です。

(なにはさておき)コマンドリファレンス


基本はこれを見ろよって話
コマンドリファレンス — redis v2.0.3 documentation

コマンドhelp


[bash]
$ redis-cli -h
redis-cli 2.3.9

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h Server hostname (default: 127.0.0.1)
-p Server port (default: 6379)
-s Server socket (overrides hostname and port)
-a Password to use when connecting to the server
-r Execute specified command N times
-i When -r is used, waits seconds per command.
It is possible to specify sub-second times like -i 0.1.
-n Database number
-x Read last argument from STDIN
-d Multi-bulk delimiter in for raw formatting (default: \n)
--raw Use raw formatting for replies (default when STDOUT is not a tty)
--help Output this help and exit
--version Output version and exit

Examples:
cat /etc/passwd | redis-cli -x set mypasswd
redis-cli get mypasswd
redis-cli -r 100 lpush mylist x
redis-cli -r 100 -i 1 info | grep used_memory_human:

When no command is given, redis-cli starts in interactive mode.
Type "help" in interactive mode for information on available commands.
[/bash]

主なコマンド類



db切替


接続時に指定
[bash]
$ redis-cli -n 0
[/bash]
コンソール中で切替(mysqlでいうところのuse)
[bash]
redis> select 0
[/bash]

flushall:データ全部削除


[bash]
$ redis-cli flushall
[/bash]

monitor:動作監視


[bash]
$ redis-cli monitor
[/bash]

keys:key一覧


[bash]
$ redis-cli keys *
[/bash]

type:型の確認


[bash]
$ redis-cli type [key]
[/bash]

info:統計情報


memcacheのstatsみたいな感じっすね。confで有効化してないと出てこない値も多いです。
[bash]
$ redis-cli info
redis_version:2.2.13
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:epoll
process_id:9117
uptime_in_seconds:400
uptime_in_days:0
lru_clock:1575027
used_cpu_sys:0.00
used_cpu_user:0.00
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:2
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:807112
used_memory_human:788.20K
used_memory_rss:1503232
mem_fragmentation_ratio:1.86
use_tcmalloc:0
loading:0
aof_enabled:1
changes_since_last_save:1
bgsave_in_progress:0
last_save_time:1315984259
bgrewriteaof_in_progress:0
total_connections_received:6
total_commands_processed:42
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
hash_max_zipmap_entries:512
hash_max_zipmap_value:64
pubsub_channels:0
pubsub_patterns:0
vm_enabled:0
role:slave
master_host:172.28.238.160
master_port:6380
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
[/bash]

参考になるリンク




おまけ


データ詰めたりして遊んでます。
[python]
#!/usr/bin/python2.6

import redis

if __name__=="__main__":

rpool = redis.ConnectionPool(host='xxx.xxx.xxx.xxx',port=6379,db=0)
r = redis.Redis(connection_pool=rpool)

cnt = 0
y = 0
while cnt < 70000:
y = str(y) + '0'
cnt += 1

for i in range(0,10000):
r.set('foo' + str(i),str(y) + str(i))
[/python]

2011年9月13日火曜日

MySQLでrootのパスワードをnullに戻すメモ

環境はmysql 5.5 GA

my.cnfに下記を追加してmysqlをrestart
[bash]
skip-grant-tables
[/bash]

mysqlにログイン
[bash]
$ mysql -uroot
[/bash]

下記のSQLを発行
[SQL]
> use mysql;
> update user set Password=null where Host='localhost' and User='root';
> FLUSH PRIVILEGES;
>\q
[/SQL]

その後SET PASSWORD~とかすればよいです

2011年9月6日火曜日

perlのハッシュ備忘録

メモ



  • 重複キーは上書きされる



基本形


[perl]
#!/usr/bin/perl

use strict;
use warnings;
use utf8;

#キーは文字列、値はスカラー
my %sample_hash = (
'hoge01' => 11,
'hoge02' => 12,
'hoge03' => 13,
);

#値の追加
$sample_hash{'hoge04'} = 14;

#値の削除
delete $sample_hash{'hoge01'};

#値の取り出し
foreach my $i (keys(%sample_hash)){
print $i.":".$sample_hash{$i}."\n";
}


[/perl]

以下書きかけ…

ハッシュスライス


多次元ハッシュエミュレーション