今天继续整理redis的笔记
对于键值对类型数据库,我们进行对keys的操作
一、对与keys操作
1.keys pattern :获取所有与pattern匹配key,并返回。*表示任意一个或多个字符,?表示一个字符
127.0.0.1:6379> keys * 1) "mylist2" 2) "mylist" 3) "myset" 4) "myb1" 5) "my2" 6) "my3" 7) "sort1" 8) "mylist5" 9) "mylist3" 10) "mylist6"2.del key1 key2 :删除指定的key
127.0.0.1:6379> del mylist2 mylist (integer) 2 127.0.0.1:6379> keys * 1) "myset" 2) "myb1" 3) "my2" 4) "my3" 5) "sort1" 6) "mylist5" 7) "mylist3" 8) "mylist6"
3. exists key:判断该key是否存在,1表示存在,0代表不存在
127.0.0.1:6379> exists mylist (integer) 0 127.0.0.1:6379> exists myset (integer) 1
4.r ename key newkey :为key重命名
127.0.0.1:6379> rename myset mset OK 127.0.0.1:6379> keys * 1) "mset" 2) "myb1" 3) "my2" 4) "my3" 5) "sort1" 6) "mylist5" 7) "mylist3" 8) "mylist6"
5. expire key:设置过期时间,单位:秒
6. ttl key :获取该key的剩余过期时间:如果没有设置超时返回-1.如果返回-2,表示超时不存在
7.type key:获取指定key的类型
127.0.0.1:6379> expire mset 100 (integer) 1 127.0.0.1:6379> ttl mset (integer) 91 127.0.0.1:6379> type mset set
二、redis的多数据库
一个redis实例可以包括多个数据库,客户端可以指定连接哪一个数据库,一个redis实例最多可以提供16个数据库,下标从0-15,客户端默认连接第0号数据库,也可以通过select选择连接哪一个数据库
select 2:连接2号数据库
move newkey 2:将指定key移植到2号库中
quit:退出连接
dbsize:返回当前库中的key的数目
info:获取服务器信息统计
flushdb:删除当前库中的所有key
flushall:删除所有库中的所有key
127.0.0.1:6379> select 2 OK 127.0.0.1:6379[2]> keys * (empty list or set) 127.0.0.1:6379[2]> select 0 OK 127.0.0.1:6379> keys * 1) "myb1" 2) "my2" 3) "my3" 4) "sort1" 5) "mylist5" 6) "mylist3" 7) "mylist6" 8) "my1" 127.0.0.1:6379> move my2 2 (integer) 1 127.0.0.1:6379> select 2 OK 127.0.0.1:6379[2]> keys * 1) "my2" 127.0.0.1:6379[2]> dbsize (integer) 1 127.0.0.1:6379[2]> info # Server redis_version:3.0.0 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:748e49c70e31075b redis_mode:standalone os:Linux 4.13.0-43-generic x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:5.4.0 process_id:5647 run_id:1d15ba13c2de26271a1c00fea9fb2cf6cbd16fbc tcp_port:6379 uptime_in_seconds:1651 uptime_in_days:0 hz:10 lru_clock:1883511 config_file:/usr/local/redis/bin/redis.conf # Clients connected_clients:1 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 # Memory used_memory:820680 used_memory_human:801.45K used_memory_rss:3788800 used_memory_peak:820680 used_memory_peak_human:801.45K used_memory_lua:35840 mem_fragmentation_ratio:4.62 mem_allocator:jemalloc-3.6.0 # Persistence loading:0 rdb_changes_since_last_save:2 rdb_bgsave_in_progress:0 rdb_last_save_time:1528609417 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:18 instantaneous_ops_per_sec:0 total_net_input_bytes:503 total_net_output_bytes:1070 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:1 evicted_keys:0 keyspace_hits:3 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:124 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:1.28 used_cpu_user:0.61 used_cpu_sys_children:0.00 used_cpu_user_children:0.00 # Cluster cluster_enabled:0 # Keyspace db0:keys=19,expires=0,avg_ttl=0 db2:keys=1,expires=0,avg_ttl=0 127.0.0.1:6379[2]> type my2 set 127.0.0.1:6379[2]> flushdb OK 127.0.0.1:6379[2]> keys * (empty list or set)
三、redis消息的订阅与发布
subscribe channel :订阅频道
psubscribe channel*:批量订阅
publish channel content :在指定的频道中发布消息
我们打开两个redis的连接,也就是打开两个终端,分别连接redis,
我们在1号终端中订阅频道,频道名任意起
127.0.0.1:6379[2]> subscribe mychat Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "mychat" 3) (integer) 1
然后我们在2号终端中在对应频道mycha发布消息,
127.0.0.1:6379> publish mychat 123 (integer) 1
我们这是会看见1号终端出现信息
1) "message" 2) "mychat" 3) "123"
订阅就是这样简单,批量订阅越是如此,这里不再重复叙述
四、redis事务特征
相关命令:
multi:开启事务
exec:提交事务
discard:事务回滚
127.0.0.1:6379> multi OK 127.0.0.1:6379> set number 1 QUEUED 127.0.0.1:6379> incr number QUEUED 127.0.0.1:6379> incr number QUEUED 127.0.0.1:6379> exec 1) OK 2) (integer) 2 3) (integer) 3
127.0.0.1:6379> set number1 1 OK 127.0.0.1:6379> multi OK 127.0.0.1:6379> incr number1 QUEUED 127.0.0.1:6379> incr number1 QUEUED 127.0.0.1:6379> discard OK 127.0.0.1:6379> get number1 "1"
五、redis的持久化
redis的高性能是由于其将所有数据都存储在了内存中,为了是redis在重启后仍能保证数据不丢失,需要从内存中同步到硬盘中,这一过程就是持久化
redis支持两种方式的持久化,一种RDB方式,一种是AOF方式,可以单独使用其中一种或者两种将二者结合使用
这里不在详细讲述这两种持久化方式的使用以及比较