高级命令
keys * : 返回满足的所有键 ,可以模糊匹配
exists :是否存在指定的key,存在返回1,不存在返回0
exprie:设置某个key的过期时间
ttl:查看剩余时间
persisit:取消过去时间
select : 选择数据库 数据库为0-15(默认一共16个数据库) s
设计成多个数据库实际上是为了数据库安全和备份
move key dbindex : 将当前数据中的key转移到其他数据库
randmkey:随机返回一个key
rename:重命名key
127.0.0.1:6379> keys * 1) "set6" 2) "c" .....
127.0.0.1:6379> exists list5 (integer) 0 127.0.0.1:6379> exists list1 (integer) 1
127.0.0.1:6379> set a 5 OK 127.0.0.1:6379> expire a 100 (integer) 1 127.0.0.1:6379> ttl a (integer) 61 127.0.0.1:6379> ttl a (integer) 60
127.0.0.1:6379> persist a (integer) 1 127.0.0.1:6379> ttl a (integer) -1
127.0.0.1:6379> select 8 OK 127.0.0.1:6379[8]> 127.0.0.1:6379[8]> select 0 OK 127.0.0.1:6379>
127.0.0.1:6379> move a 8 (integer) 1 127.0.0.1:6379> get a (nil) 127.0.0.1:6379> select 8 OK 127.0.0.1:6379[8]> get a "5"
127.0.0.1:6379> randomkey "user1"
127.0.0.1:6379> smembers set6 1) "a" 2) "c" 3) "b" 4) "d" 127.0.0.1:6379> rename set6 set7 OK 127.0.0.1:6379> smembers set6 (empty list or set) 127.0.0.1:6379> smembers set7 1) "a" 2) "c" 3) "b" 4) "d"
echo:打印命令
dbsize:查看数据库的key数量
info:查看数据库信息
config get * 实时传储收到的请求,返回相关的配置
flushdb :清空当前数据库
flushall :清空所有数据库
127.0.0.1:6379> echo hellojack "hellojack"
127.0.0.1:6379> dbsize (integer) 16 127.0.0.1:6379> keys * 1) "c" 2) "zset1" 3) "list4" 4) "set3" 5) "b" 6) "list3" 7) "user2" 8) "set5" 9) "list" 10) "set7" 11) "list1" 12) "user1" 13) "set2" 14) "set4" 15) "6" 16) "set1"
127.0.0.1:6379> info # Server redis_version:2.9.105 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:7528e43d2b782d55 redis_mode:standalone os:Linux 2.6.32-504.el6.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.4.7 process_id:1743 run_id:761d6b4cfe9510ec62c3dd3f0861cff79b31e016 tcp_port:6379 uptime_in_seconds:11297 uptime_in_days:0 hz:10 lru_clock:15308461 config_file:/usr/local/redis/conf/6379.conf # Clients connected_clients:1 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 # Memory used_memory:818088 used_memory_human:798.91K used_memory_rss:7438336 used_memory_peak:818304 used_memory_peak_human:799.12K used_memory_lua:35840 mem_fragmentation_ratio:9.09 mem_allocator:jemalloc-3.6.0 # Persistence loading:0 rdb_changes_since_last_save:0 rdb_bgsave_in_progress:0 rdb_last_save_time:1508478949 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:0 rdb_current_bgsave_time_sec:-1 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok # Stats total_connections_received:1 total_commands_processed:89 instantaneous_ops_per_sec:0 total_net_input_bytes:3170 total_net_output_bytes:2113 instantaneous_input_kbps:0.00 instantaneous_output_kbps:0.00 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 evicted_keys:0 keyspace_hits:57 keyspace_misses:4 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:2492 migrate_cached_sockets:0 # Replication role:master connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:11.86 used_cpu_user:3.63 used_cpu_sys_children:0.02 used_cpu_user_children:0.00 # Cluster cluster_enabled:0 # Keyspace db0:keys=16,expires=0,avg_ttl=0 db8:keys=1,expires=0,avg_ttl=0 127.0.0.1:6379>
Redis 发布与订阅消息
Redis提供了简单的发布订阅功能:
subscribe [频道] 进行订阅监听
publish [频道 发布内容] 进行发布消息广播
测试:准备几个ssh链接
ssh1:订阅频道cctv-1
[root@localhost ~]# /usr/local/redis/bin/redis-cli -a redis (本例中设置了密码为redis) 127.0.0.1:6379> subscribe cctv-1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "cctv-1" 3) (integer) 1
ssh2:订阅频道cctv-1
[root@localhost ~]# /usr/local/redis/bin/redis-cli -a redis 127.0.0.1:6379> subscribe cctv-1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "cctv-1" 3) (integer) 1
ssh3: 往频道cctv-1发布消息 “abcd”
[root@localhost ~]# /usr/local/redis/bin/redis-cli -a redis 127.0.0.1:6379> publish cctv-1 "abcd" (integer) 1
观察ssh1 和 ssh2 的控制台。
Redis安全性
因为redis速度相当快,所以一台比较好的服务器下,一个外部用户在一秒内可以进行15W次密码尝试,这意味着你需要设定非常强大的密码来防止暴力破解。
redis一般都设置为内网访问。
vi /usr/local/redis/conf/6379.conf
修改:#reqirepass foobared
为 : reqirepass redis(你的密码)
重启服务,再次进入会发现没有权限:
[root@localhost conf]# pkill redis-server [root@localhost conf]# ../bin/redis-server /usr/local/redis/conf/6379.conf [root@localhost conf]# cd .. [root@localhost redis]# cd bin/ [root@localhost bin]# ./redis-cli 127.0.0.1:6379> keys * (error) NOAUTH Authentication required.
输入密码则成功进入:
127.0.0.1:6379> auth redis OK 127.0.0.1:6379> keys * 1) "c" 2) "set1" 3) "zset1" ......
每次进入的时候都要输入密码,简单的方法,登录授权:
[root@localhost bin]# ./redis-cli -a redis 127.0.0.1:6379> keys * 1) "c" 2) "set1" .......