# Server
redis_version:3.2.100
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:dd26f1f93c5130ee
redis_mode:standalone
os:Windows
arch_bits:64
multiplexing_api:WinSock_IOCP
process_id:17004 //进程ID
run_id:4504fcef813ee822421b3cf38c73aa72a45509b4
tcp_port:6379
uptime_in_seconds:1320
uptime_in_days:0
hz:10
lru_clock:12587164
executable:D:\Program Files\Redis\redis-server.exe
config_file:D:\Program Files\Redis\redis.windows.conf
# Clients
connected_clients:2
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:711320
used_memory_human:694.65K
used_memory_rss:673408
used_memory_rss_human:657.63K
used_memory_peak:787128
used_memory_peak_human:768.68K
total_system_memory:0
total_system_memory_human:0B
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:0.95
mem_allocator:jemalloc-3.6.0
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1556090947
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:2
total_commands_processed:14
instantaneous_ops_per_sec:0
total_net_input_bytes:338
total_net_output_bytes:11756156
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:4
keyspace_misses:2
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:6335
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:0.16
used_cpu_user:0.08
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
# Cluster
cluster_enabled:0
# Keyspace 当前redis实例的数据库空间
db0:keys=2,expires=0,avg_ttl=0 //redis启动默认使用第0个空间
配置文件中databases 16
代表有16个数据空间(0-15) ,可以使用 select [dbid] 切换空间;通常可以用于测试环境和生产环境的切换
127.0.0.1:6379> set a c
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get a
(nil)
select [dbid]
切换到指定的数据库flushdb
清除当前数据空间(database),慎用flushall
清除所有的数据空间ping
测试连接是否正常keys *
显示当前数据空间下所有的键dbsize
显示当前数据空间下的键值对个数save
redis持久化命令quit
退出client连接monitor
日志监控命令set [key] [value]
设置键值对,返回OK显示设置成功
del [key]
删除键值对,
(integer) 1
返回受影响的条数,删除不存在的键返回0keys *
显示所有的键
(empty list or set)
exists [key]
查看键是否存在
expire [key] [time]
设置key的有效期;可以用于session的有效期
ttl [key]
查看key的过期时间
(integer) -1
返回-1代表key没有过期时间(integer) -2
返回-2代表key不存在type [key]
查看key的类型,若是做动态数据类型的话,可以根据key的类型决定怎么取值
127.0.0.1:6379> set a b
OK
127.0.0.1:6379> type a
string
127.0.0.1:6379> hset hash name tom
(integer) 1
127.0.0.1:6379> type hash
hash
127.0.0.1:6379> type name
none
127.0.0.1:6379> keys *
1) "a"
2) "b"
3) "hash"
randomkey
随机返回一个已经存在的key
rename [old_key] [new_key]
将key 重命名,不会直接校验是否存在
127.0.0.1:6379> keys *
1) "c"
2) "a"
3) "b"
4) "hash"
127.0.0.1:6379> rename c d //key不存在的话,直接将当前的值赋值给新key,然后删除
OK
127.0.0.1:6379> keys *
1) "b"
2) "a"
3) "hash"
4) "d"
127.0.0.1:6379> get d
"c"
127.0.0.1:6379> rename b d //key已经存在的情况下,删除当前key,将key对应的值赋值给更名的key
OK
127.0.0.1:6379> get d
"b"
以 nx 结尾的命令一般比较特殊,会有包含判断的逻辑
renamenx [old key] [new key]
将key进行更名,若是新的key不存在127.0.0.1:6379> renamenx a b
(integer) 0
127.0.0.1:6379> get a
"a"
127.0.0.1:6379> renamenx a m
(integer) 1
127.0.0.1:6379> get a
(nil)
127.0.0.1:6379> get m
"a"
set [key] [value]
设置键值对,实际就是使用的字符串结构setex [key] [time] [value]
ex 是expire的缩写,可以设置有效期
setex c 100 c
设置c的值是c,有效期是100秒psetex [key] [time] [value]
可以设置有效期 ,时间单位是毫秒
psetex d 10000 d
设置d的值是d,有效期是10秒getrange key start_index end_index
返回某个值的截取的范围,两边都是取闭区间127.0.0.1:6379> set name myname
OK
127.0.0.1:6379> getrange name 0 2
"myn"
getset key value
先get再set,也就是返回前一个值,在设置新的值
mset key1 value1 key2 value2 key3 value3
同时设置多个key和value
mget key1 key2 key3
同时设置多个key和value
//mget 对应mset
127.0.0.1:6379> mset a a b b c c
OK
127.0.0.1:6379> mget a b c
1) "a"
2) "b"
3) "c"
setnx key value
类似于set命令,但是会进行逻辑判断,只有当key不存在的时候才会set,不然无法设置值
strlen key
查看某个字符串的长度
msetnx key1 value1 key2 value2 ...
批量设置值,但是会判断值是否存在,只有不存在才会设置
set key init-num
设置一个数字类型的初始值,
incr key
让一个数字加1 ,
(error) ERR value is not an integer or out of range
incr key
若是key不存在,则会创建一个值从1开始的键值对incrby key num
让一个值为数字的key增加固定的值
decr key
让一个值为数字的key减少1 ,和incr
对应,若是不存在,直接创建从-1开始,若是存在且是数字,直接在原有基础上减一
decrby key num
让一个值为数字的key减少固定的值
以上数字操作都会返回操作之后的结果
127.0.0.1:6379> incr A //若是key不存在,则创建一个key为A值为1的键值对
(integer) 1
127.0.0.1:6379> get A
"1"
127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3
127.0.0.1:6379> get num
"3"
127.0.0.1:6379> incrby num 100 //让key为num的值增加100
(integer) 103
127.0.0.1:6379> decr num
(integer) 102
127.0.0.1:6379> decr f
(integer) -1
127.0.0.1:6379> decr f
(integer) -2
127.0.0.1:6379> decrby num 10
(integer) 92
append key str
直接将一个字符串追加到value的末尾,返回字符串的长度
append a hello
将 字符串hello追加到key为a的值后面切换数据空间
select 1
hset hash-name key value
为hash赋值,不存在则创建hexists hash-name key
判断hash中的某个键值是否存在hget hash-name key
获取hash中某个key对应的值,若是不存在返回nil
hgetall hash-name
获取hash中的所有的key-valuehkeys hash-name
获取hash中所有的keyhvals hash-name
获取hash中所有的valuehlen hash-name
获取键值对的个数,其实也是key的个数hmget hash-name key1 key2 ...
获取hash中的多个key对应的值hmset hash-name key1 value1 key2 value2...
一次设置多个键值对给hashhdel hash-name key1 key2...
删除指定hash中key-valuehsetnx hash-name key value
在指定hash表中如果键不存在,将键值对插入hash集合,,添加成功返回1 失败返回0127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> hset map name zhang
(integer) 1
127.0.0.1:6379[1]> keys *
1) "map"
127.0.0.1:6379[1]> type map //查看key对应的值类型
hash
127.0.0.1:6379[1]> hexists map name //查看hash是否存在,存在返回1,不存在返回0
(integer) 1
127.0.0.1:6379[1]> hexists map name1 //不存在则返回0
(integer) 0
127.0.0.1:6379[1]> keys *
1) "map"
127.0.0.1:6379[1]> hget map name //获取hash集合中key为name的值
"zhang"
127.0.0.1:6379[1]> hlen map //获取hash长度
(integer) 2
127.0.0.1:6379[1]> hmget map name age //获取name和age对应的值
1) "zhang"
2) "15"
127.0.0.1:6379[1]> hmset map email [email protected] sex boy
OK
127.0.0.1:6379[1]> hgetall map
1) "name"
2) "zhang"
3) "age"
4) "15"
5) "email"
6) "[email protected]"
7) "sex"
8) "boy"
127.0.0.1:6379[1]> hlen map
(integer) 4
127.0.0.1:6379[1]> hdel map sex
(integer) 1
127.0.0.1:6379[1]> hsetnx map name lisi //判断存在与否,添加hash键值对;
(integer) 0
127.0.0.1:6379[1]> hsetnx map addr hubei
(integer) 1
切换数据空间 select 2
lpush list-name value1 value2 value3...
将元素赋值给list,如果list不存在则创建
llen list-name
查看集合的长度
lrange list-name 0 2
获取集合范围的值,两边都是闭区间,但是这个设定的范围可以比实际的范围区间大
lset list-name index value
设置指定索引位置的值,
(error) ERR index out of range
lindex list-name index
获取指定索引位置的元素
lpop list-name
移除列表第一个元素
rpop list-name
移除列表最后一个元素
select 2
127.0.0.1:6379[2]> lpush list 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379[2]> keys *
1) "list"
127.0.0.1:6379[2]> type list
list
127.0.0.1:6379[2]> llen list
(integer) 6
127.0.0.1:6379[2]> lrange list 0 2
1) "6"
2) "5"
3) "4"
127.0.0.1:6379[2]> lindex list 5
"1"
select 3 切换数据空间
sadd set-name value1 value2 value3...
添加元素到set,
scard set-name
返回set集合元素的数量
smembers set-name
返回集合元素的成员
sdiff set1 set2
差集合并,相当于set1-set2,返回set2中没有的元素
sinter set1 set2
交集合并 ,返回set1,set2中都有的元素
sunion set1 set2
合并两个集合,并且去重
srandmember set-name num
返回某个set集合中的一个或者多个随机元素
sismember set-name value
判断某个元素是否在集合中,返回1表示在集合中,返回0表示不在集合中
srem set-name value1 value2...
移除某个集合中的一个或者多个成员
spop set-name
移除一个随机元素 ,并且返回这个元素(被移除的)
127.0.0.1:6379[3]> sadd set a b c d
(integer) 4
127.0.0.1:6379[3]> keys *
1) "set"
127.0.0.1:6379[3]> type set
set
127.0.0.1:6379[3]> sadd set a
(integer) 0
127.0.0.1:6379[3]>
127.0.0.1:6379[3]> scard set
(integer) 4
具备集合set的特性,添加删除查找的时间复杂度都是O(1),也是通过hash表实现的,但是可以保证有序
zadd sortedset-name 100 a 200 b 300 c
添加元素到有序集合中,若是集合不存在则会创建
zcard sortedset-name
返回元素个数
zcount sortedset-name score1 score2
返回某一个分数区间的元素个数,分数区间为闭合区间
zrank sortedset-name value
返回某一个元素在集合中的索引(也就是排序,位于集合中的第几个元素)
这里注意索引和分数的区别,改变分数会影响排序
zincrby sortedset-name add-score-num value
将某个元素的分数提高add-score-num,返回提高后的分数,会影响到元素的索引和排序
zrange sortedset-name start end
返回某个范围内的所有元素,范围可以比实际的范围大
zrange sortedset-name start end withscores
返回某个范围内的全部元素和元素的分数每一丝灵感都值得被记录,每一笔记录都是成长,每一点成长都值得欢呼
博主个人站: www.imisty.cn
CSDN博客: https://blog.csdn.net/lookinthefog
博客园 :https://imist.cnblogs.com/
希望能够认识一些热爱技术的小伙伴,欢迎友链接哟