Redis入门到精通-Redis高级命令

来源:互联网 发布:淘宝自己开网店怎么开 编辑:程序博客网 时间:2024/06/05 22:42

六、Redis高级命令

高级命令

​ 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) 0127.0.0.1:6379> exists list1(integer) 1
127.0.0.1:6379> set a 5OK127.0.0.1:6379> expire a 100(integer) 1127.0.0.1:6379> ttl a(integer) 61127.0.0.1:6379> ttl a(integer) 60
127.0.0.1:6379> persist a(integer) 1127.0.0.1:6379> ttl a(integer) -1
127.0.0.1:6379> select 8OK127.0.0.1:6379[8]>127.0.0.1:6379[8]> select 0OK127.0.0.1:6379>
127.0.0.1:6379> move a 8(integer) 1127.0.0.1:6379> get a(nil)127.0.0.1:6379> select 8OK127.0.0.1:6379[8]> get a"5"
127.0.0.1:6379> randomkey"user1"
127.0.0.1:6379> smembers set61) "a"2) "c"3) "b"4) "d"127.0.0.1:6379> rename set6 set7OK127.0.0.1:6379> smembers set6(empty list or set)127.0.0.1:6379> smembers set71) "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) 16127.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# Serverredis_version:2.9.105redis_git_sha1:00000000redis_git_dirty:0redis_build_id:7528e43d2b782d55redis_mode:standaloneos:Linux 2.6.32-504.el6.x86_64 x86_64arch_bits:64multiplexing_api:epollgcc_version:4.4.7process_id:1743run_id:761d6b4cfe9510ec62c3dd3f0861cff79b31e016tcp_port:6379uptime_in_seconds:11297uptime_in_days:0hz:10lru_clock:15308461config_file:/usr/local/redis/conf/6379.conf# Clientsconnected_clients:1client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0# Memoryused_memory:818088used_memory_human:798.91Kused_memory_rss:7438336used_memory_peak:818304used_memory_peak_human:799.12Kused_memory_lua:35840mem_fragmentation_ratio:9.09mem_allocator:jemalloc-3.6.0# Persistenceloading:0rdb_changes_since_last_save:0rdb_bgsave_in_progress:0rdb_last_save_time:1508478949rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:0rdb_current_bgsave_time_sec:-1aof_enabled:0aof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_last_write_status:ok# Statstotal_connections_received:1total_commands_processed:89instantaneous_ops_per_sec:0total_net_input_bytes:3170total_net_output_bytes:2113instantaneous_input_kbps:0.00instantaneous_output_kbps:0.00rejected_connections:0sync_full:0sync_partial_ok:0sync_partial_err:0expired_keys:0evicted_keys:0keyspace_hits:57keyspace_misses:4pubsub_channels:0pubsub_patterns:0latest_fork_usec:2492migrate_cached_sockets:0# Replicationrole:masterconnected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0# CPUused_cpu_sys:11.86used_cpu_user:3.63used_cpu_sys_children:0.02used_cpu_user_children:0.00# Clustercluster_enabled:0# Keyspacedb0:keys=16,expires=0,avg_ttl=0db8:keys=1,expires=0,avg_ttl=0127.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-1Reading 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 redis127.0.0.1:6379> subscribe cctv-1Reading 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 redis127.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-cli127.0.0.1:6379> keys *(error) NOAUTH Authentication required.

​ 输入密码则成功进入:

127.0.0.1:6379> auth redisOK127.0.0.1:6379> keys * 1) "c" 2) "set1" 3) "zset1"  ......

​ 每次进入的时候都要输入密码,简单的方法,登录授权:

[root@localhost bin]# ./redis-cli -a redis127.0.0.1:6379> keys * 1) "c" 2) "set1"   .......

原创粉丝点击