非关系型数据库redis
Redis初始
redis中不区分字母的大小写
查看端口 ss tnlp
-
安装
-
编译安装(需要先配置epel源)
yum install -y redis
-
编译安装
wget https://download.redis.io/releases/redis-6.2.6.tar.gz 解压 tar -zxf redis-4.0.10.tar.gz 3.切换redis源码目录 cd redis-4.0.10.tar.gz 4.编译源文件 make 5.编译好后,src/目录下有编译好的redis指令 6.make install 安装到指定目录,默认在/usr/local/bin
-
-
redis可执行文件
./redis-benchmark //用于进行redis性能测试的工具 ./redis-check-dump //用于修复出问题的dump.rdb文件 ./redis-cli //redis的客户端 ./redis-server //redis的服务端 ./redis-check-aof //用于修复出问题的AOF文件 ./redis-sentinel //用于集群管理
1、启动redis服务
-
进入安装目录 默认/usr/local/bin 执行./redis-server redis-server redis.conf 默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。
-
启动redis后会默认占用终端口
2、redis连接
-
./redis-cli [wusir@localhost bin]$ ./redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379> 127.0.0.1:6379> echo 'return pong successful connection' "return pong successful connection 回复pong表示连接成功
-
ECHO 与linux的打印效果一致
-
127.0.0.1:6379> set name 'dog' OK 127.0.0.1:6379> get name "dog" 127.0.0.1:6379>
3、常用命令
-
退出命令 quit 127.0.0.1:6379> quit [wusir@localhost bin]$
-
del删除命令
127.0.0.1:6379> SET ZJW SG OK 127.0.0.1:6379> SET QQ HHHH OK 127.0.0.1:6379> DEL name (integer) 1 127.0.0.1:6379> set name (error) ERR wrong number of arguments for 'set' command 127.0.0.1:6379> get name (nil) 127.0.0.1:6379> get zjw (nil) 127.0.0.1:6379> get ZJW "SG" 127.0.0.1:6379> get QQ "HHHH" 127.0.0.1:6379> DEL ZJW QQ (integer) 2 删除一个或者多个值 127.0.0.1:6379> 127.0.0.1:6379> del aaa (integer) 0 不存在的被忽略掉 127.0.0.1:6379>
-
exites key
127.0.0.1:6379> set wusir 666 OK 127.0.0.1:6379> exists wusir (integer) 1 127.0.0.1:6379> exists name (integer) 0
-
keys *
查看所有的key 值
-
keys 匹配规则(正则)
KEYs a??,
-
expire key 秒
设置有效时间,
-
TTL key
查看剩余有效时间,两个特殊值-2key不存在(KEY过期),-1永久有有效,不设置时间
-
pexpire key 毫秒
设置有效毫秒
-
pttl key
查看剩余毫秒
-
randomkey
随机获取一个KEY,但是不删除,数据库为空返回nil
-
move key db
将数据转移至其他的数据库
-
rename
重命名KEY,如果不存在则报错
rename key newkey,如果已有key,则直接覆盖
-
127.0.0.1:6379> set name helloworld OK 127.0.0.1:6379> keys * 1) "wusir" 2) "name" 127.0.0.1:6379> set hh 12345 OK 127.0.0.1:6379> expire name 10 (integer) 1 127.0.0.1:6379> ttl name (integer) 5 127.0.0.1:6379> ttl name (integer) 2 127.0.0.1:6379> ttl name (integer) -2 127.0.0.1:6379> ttl wusir (integer) -1 127.0.0.1:6379> keys * 1) "wusir" 2) "hh" 127.0.0.1:6379> keys h? 1) "hh" 127.0.0.1:6379> pexpire hh 9000 (integer) 1 127.0.0.1:6379> pttl hh (integer) 3405 127.0.0.1:6379> pttl (error) ERR wrong number of arguments for 'pttl' command 127.0.0.1:6379> pttl hh (integer) -2 127.0.0.1:6379> pttl wusir (integer) -1 127.0.0.1:6379> set zjw hello OK 127.0.0.1:6379> keys (error) ERR wrong number of arguments for 'keys' command 127.0.0.1:6379> keys * 1) "wusir" 2) "zjw" 127.0.0.1:6379> set www fff OK 127.0.0.1:6379> set ggg ccc OK 127.0.0.1:6379> keys * 1) "ggg" 2) "wusir" 3) "www" 4) "zjw" 127.0.0.1:6379> set key valse OK 127.0.0.1:6379> randromkey (error) ERR unknown command `randromkey`, with args beginning with: 127.0.0.1:6379> randomkey "www" 127.0.0.1:6379> randomkey "ggg" 127.0.0.1:6379> randomkey "www" 127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> randomkey "key" 127.0.0.1:6379> randomkey "www" 127.0.0.1:6379> move www 2 (integer) 1 127.0.0.1:6379> move www 2 (integer) 0 127.0.0.1:6379> get www (nil) 127.0.0.1:6379> select 2 OK 127.0.0.1:6379[2]> get www "fff" 127.0.0.1:6379[2]> select 3 OK 127.0.0.1:6379[3]> randomkey (nil) 127.0.0.1:6379[3]> select 0 OK 127.0.0.1:6379> keys * 1) "ggg" 2) "key" 3) "zjw" 4) "wusir" 127.0.0.1:6379> rename ggg gege OK 127.0.0.1:6379> rename key kkk OK 127.0.0.1:6379> keys * 1) "kkk" 2) "zjw" 3) "gege" 4) "wusir" 127.0.0.1:6379> get kkk "valse" 127.0.0.1:6379> get zjw "hello" 127.0.0.1:6379> rename kkk zjw OK 127.0.0.1:6379> get zjw "valse" 127.0.0.1:6379> renamenx gege wusir (integer) 0 127.0.0.1:6379> get wusir "666" 127.0.0.1:6379> get gege "ccc" 127.0.0.1:6379> keys * 1) "zjw" 2) "gege" 3) "wusir" 127.0.0.1:6379> type gege string 127.0.0.1:6379> type wusir string 127.0.0.1:6379> type kkkkkkk none 127.0.0.1:6379> lpush alexlist dsb dsb2 (integer) 2 127.0.0.1:6379> type alexlist list 127.0.0.1:6379>
-
renamenx
127.0.0.1:6379> keys * 1) "ggg" 2) "key" 3) "zjw" 4) "wusir" 127.0.0.1:6379> rename ggg gege OK 127.0.0.1:6379> rename key kkk OK 127.0.0.1:6379> keys * 1) "kkk" 2) "zjw" 3) "gege" 4) "wusir" 127.0.0.1:6379> get kkk "valse" 127.0.0.1:6379> get zjw "hello" 127.0.0.1:6379> rename kkk zjw OK 127.0.0.1:6379> get zjw "valse" 127.0.0.1:6379> renamenx gege wusir (integer) 0 127.0.0.1:6379> 127.0.0.1:6379> get wusir "666" 127.0.0.1:6379> get gege "ccc" 127.0.0.1:6379> keys * 1) "zjw" 2) "gege" 3) "wusir" 127.0.0.1:6379>
-
type
查看存储value的数据类型,如果键不存在返回None
127.0.0.1:6379> type gege string 127.0.0.1:6379> type wusir string 127.0.0.1:6379> type kkkkkkk none 127.0.0.1:6379> lpush alexlist dsb dsb2 (integer) 2 127.0.0.1:6379> type alexlist list 127.0.0.1:6379>
-
select 命令
SELECT 2; 默认到2库中;总共有16个库,编号为0到15 切换redis的库
127.0.0.1:6379> select 2 OK 127.0.0.1:6379[2]> select 15 OK 127.0.0.1:6379[15]> select 16 (error) ERR DB index is out of range 127.0.0.1:6379[15]> get name (nil) 127.0.0.1:6379[15]> select 0 OK 127.0.0.1:6379> get name "dog" 127.0.0.1:6379>
[wusir@localhost bin]$ ./redis-cli -n 15 127.0.0.1:6379[15]> 启动的时候直接进行到对应库
-
info命令获取系统信息
127.0.0.1:6379> info 不加参数显示所有 # Server redis_version:6.2.6 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:c38900315f2f12fd redis_mode:standalone os:Linux 3.10.0-1160.el7.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:4.8.5 process_id:8451 process_supervised:no run_id:4bccf2f220d12c142d1514a61119a717b83ecb04 tcp_port:6379 server_time_usec:1634866336526570 uptime_in_seconds:1048 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:7476384 executable:/usr/local/bin/./redis-server config_file: io_threads_active:0 # Clients connected_clients:1 cluster_connections:0 maxclients:10000 client_recent_max_input_buffer:24 client_recent_max_output_buffer:0 blocked_clients:0 tracking_clients:0 clients_in_timeout_table:0 # Memory used_memory:873680 used_memory_human:853.20K used_memory_rss:3014656 used_memory_rss_human:2.88M used_memory_peak:931824 used_memory_peak_human:909.98K used_memory_peak_perc:93.76% used_memory_overhead:830408 used_memory_startup:809832 used_memory_dataset:43272 used_memory_dataset_perc:67.77% allocator_allocated:920808 allocator_active:1187840 allocator_resident:3702784 total_system_memory:1907744768 total_system_memory_human:1.78G used_memory_lua:37888 used_memory_lua_human:37.00K used_memory_scripts:0 used_memory_scripts_human:0B number_of_cached_scripts:0 maxmemory:0 maxmemory_human:0B maxmemory_policy:noeviction allocator_frag_ratio:1.29 allocator_frag_bytes:267032 allocator_rss_ratio:3.12 allocator_rss_bytes:2514944 rss_overhead_ratio:0.81 rss_overhead_bytes:-688128 mem_fragmentation_ratio:3.63 mem_fragmentation_bytes:2183736 mem_not_counted_for_evict:0 mem_replication_backlog:0 mem_clients_slaves:0 mem_clients_normal:20504 mem_aof_buffer:0 mem_allocator:jemalloc-5.1.0 active_defrag_running:0 lazyfree_pending_objects:0 lazyfreed_objects:0 # Persistence loading:0 current_cow_size:0 current_cow_size_age:0 current_fork_perc:0.00 current_save_keys_processed:0 current_save_keys_total:0 rdb_changes_since_last_save:2 rdb_bgsave_in_progress:0 rdb_last_save_time:1634865288 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:0 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 aof_last_cow_size:0 module_fork_in_progress:0 module_fork_last_cow_size:0 # Stats total_connections_received:4 total_commands_processed:19 instantaneous_ops_per_sec:0 total_net_input_bytes:526 total_net_output_bytes:81517 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 expired_stale_perc:0.00 expired_time_cap_reached_count:0 expire_cycle_cpu_milliseconds:27 evicted_keys:0 keyspace_hits:3 keyspace_misses:1 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 total_forks:0 migrate_cached_sockets:0 slave_expires_tracked_keys:0 active_defrag_hits:0 active_defrag_misses:0 active_defrag_key_hits:0 active_defrag_key_misses:0 tracking_total_keys:0 tracking_total_items:0 tracking_total_prefixes:0 unexpected_error_replies:0 total_error_replies:1 dump_payload_sanitizations:0 total_reads_processed:23 total_writes_processed:19 io_threaded_reads_processed:0 io_threaded_writes_processed:0 # Replication role:master connected_slaves:0 master_failover_state:no-failover master_replid:937790b8a90dd91e03356bf4237c7e49224caefc master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:1.765061 used_cpu_user:1.087562 used_cpu_sys_children:0.000000 used_cpu_user_children:0.000000 used_cpu_sys_main_thread:1.595049 used_cpu_user_main_thread:1.214142 # Modules # Errorstats errorstat_ERR:count=1 # Cluster cluster_enabled:0 # Keyspace db0:keys=1,expires=0,avg_ttl=0 127.0.0.1:6379> info cpu 加上参数显示指定的系统信息 # CPU used_cpu_sys:1.860890 used_cpu_user:1.153960 used_cpu_sys_children:0.000000 used_cpu_user_children:0.000000 used_cpu_sys_main_thread:1.687953 used_cpu_user_main_thread:1.283307 127.0.0.1:6379>
4、redis数据类型
- String
- hash
- list
- set
- zset 有序