美文网首页Redis
Redis第3️⃣课 通用命令

Redis第3️⃣课 通用命令

作者: 小超_8b2f | 来源:发表于2019-04-25 11:12 被阅读9次

一、通用命令

1. keys

一般不在生产环境使用,因为生产环境数据一般会比较多,耗性能而且redis是单线程的,若运行慢会阻塞其它命令的执行。
1) 热备从节点上使用
2) scan 命令替代

127.0.0.1:6379> keys *  #遍历所有的key
1) "key2"
2) "php"
3) "hello"
4) "hehe"
5) "key3"
6) "phe"
127.0.0.1:6379> mset hello world hehe haha php good phe his
OK
127.0.0.1:6379> keys he* # 遍历所有以he开头的key
1) "hello"
2) "hehe"
127.0.0.1:6379> keys he[h-l]*  #遍历前两个字符是he,第三个字符是h到l的字符的所有key
1) "hello"
2) "hehe"
127.0.0.1:6379> keys ph? # 遍历前2个字符ph,第三个字符不定且仅有3个字符的key
1) "php"
2) "phe"

2. dbsize

dbsize: redis内部维护了一个计数器,所以不需要遍历,可以线上使用此命令

127.0.0.1:6379> dbsize
(integer) 6

3. exists命令 (检查key是否存在)

127.0.0.1:6379> exists key1  #不存在返回0
(integer) 0
127.0.0.1:6379> exists key2   #存在返回1
(integer) 1

4. del命令(删除指定的key-value)

127.0.0.1:6379> del key2
(integer) 1
127.0.0.1:6379> del key2
(integer) 0
127.0.0.1:6379> del key1 key2
(integer) 1
127.0.0.1:6379> del key3 key4
(integer) 2

二、过期时间相关命令

5. expire命令 (为key设置生存时间【秒】)
6. ttl命令 (time to live:查看key剩余的过期时间)
7. persist命令(去掉key的过期时间)

# expire [ɪkˈspaɪə(r)]  (因到期而) 失效,终止; 到期; 届满; 逝世; 去世; 故去;
127.0.0.1:6379> expire key1 1000 
(integer) 1
127.0.0.1:6379> ttl key1
(integer) 991
127.0.0.1:6379> ttl key1
(integer) 987
127.0.0.1:6379> persist key1
(integer) 1
127.0.0.1:6379> ttl key1
(integer) -1                  #(-1 代表key存在,但没有设置过期时间)
127.0.0.1:6379> persist key1
(integer) 0
127.0.0.1:6379> ttl noExistKey
(integer) -2                  # (-2 代表key不存在)

8 type key (查看key的数据类型)

#  string | hash  |  set  | zset  |  list  | none
127.0.0.1:6379> set key2 helloworld
OK
127.0.0.1:6379> type key2
string
127.0.0.1:6379> sadd mySet 1 2 3
(integer) 3
127.0.0.1:6379> type mySet
set

9. info memory 查看内存使用情况

127.0.0.1:6379> info memory
# Memory
used_memory:1039904
used_memory_human:1015.53K
used_memory_rss:3375104
used_memory_rss_human:3.22M
used_memory_peak:1039904
used_memory_peak_human:1015.53K
used_memory_peak_perc:100.00%
used_memory_overhead:1037334
used_memory_startup:987120
used_memory_dataset:2570
used_memory_dataset_perc:4.87%
allocator_allocated:1006560
allocator_active:3337216
allocator_resident:3337216
total_system_memory:8589934592
total_system_memory_human:8.00G
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:3.32
allocator_frag_bytes:2330656
allocator_rss_ratio:1.00
allocator_rss_bytes:0
rss_overhead_ratio:1.01
rss_overhead_bytes:37888
mem_fragmentation_ratio:3.35
mem_fragmentation_bytes:2368544
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_clients_slaves:0
mem_clients_normal:49694
mem_aof_buffer:0
mem_allocator:libc
active_defrag_running:0
lazyfree_pending_objects:0

三、时间复杂度

命令 时间复杂度
keys O(n)
dbsize O(1)
del O(1)
exists O(1)
expire O(1)
type O(1)

四、数据结构和内部编码

数据结构和内部编码示例图 image.png redis单线程图解

五、单线程为什么这么快?

  1. 纯内存 (主要原因)
  2. 非阻塞IO(NIO)
  3. 避免线程切换和竞态消耗
    (1)一次只运行一条命令
    (2)拒绝长(慢)命令
    keys,flushall,flushdb,show lua script,multi/exec,operate big value(collection)
    (3)其实不是单线程:
  • fysnc file descriptor
  • close file descriptor
image.png

相关文章

  • Redis第3️⃣课 通用命令

    一、通用命令 1. keys 一般不在生产环境使用,因为生产环境数据一般会比较多,耗性能而且redis是单线程的,...

  • redis 中的命令

    一、redis中的通用命令 通用命令(DDL)keys 命令del key:删除某个keyexists key:查...

  • Redis使用心得记录

    0.通用命令 1.string操作命令 注redis中字符数据类型: 2.hash操作命令 3.list操作命令 ...

  • 【Redis学习笔记】03 Redis 字符串基本操作

    1. Redis 全局命令 全局命令是指对所有数据类型都通用的命令 1.1. Redis 数据格式 Redis 的...

  • Linux Lesson 1

    1、$代表普通用户,#代表root 2、命令(npm install) 选项(-g) 参数redis 3、hist...

  • Redis | Redis 通用命令

    通用命令介绍 Redis 通用命令是一些 Redis 下可以作用在常用数据结构上的常用命令和一些基础的命令,比如删...

  • Redis通用命令

    1、keys keys 用于遍历所有key,如: keys 命令复杂度为O(n),一般不在生产环境中使用,可以使用...

  • Redis入门到高可用-2.Redis API的使用和理解

    1.Redis API的使用和理解 通用命令 字符串类型 哈希类型 列表类型 集合类型 有序集合类型 2.通用命令...

  • redis命令大全

    1、Redis 地理位置(geo) 命令 2、 Redis 键(key) 命令 3、Redis 字符串(Strin...

  • Laravel redis 正则匹配keys

    有时候redis 需要正则匹配到相应的keys, 然后获取keys列表通用使用command 命令执行keys命令...

网友评论

    本文标题:Redis第3️⃣课 通用命令

    本文链接:https://www.haomeiwen.com/subject/kbengqtx.html