IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis 基础命令 -> 正文阅读

[大数据]Redis 基础命令

一、数据结构

1.五种类型

1.字符串(String)
2.哈希(Hash)
3.列表(List)
4.集合(Set)
5.有序集合(Zset)

二、控制台操作

1.Redis服务安装(自行查找)

2.进入Redis客户端

# 部分命令提示:(error) NOAUTH Authentication required.
# 说明权限不足,连接客户端时指定密码即可
# /usr/local/bin/redis-cli -a passwd
# 连接时指定库
# /usr/local/bin/redis-cli -n 1 -a passwd
/usr/local/bin/redis-cli
# 连接后指定数据库(默认为 0 库 可通过 select 命令切换)
select 1

在这里插入图片描述

3.查看支持的最大连接数

CONFIG GET maxclients

在这里插入图片描述

4.查看Redis运行信息(info)

1.Server 服务器运行的环境参数

2.Clients 客户端相关信息

3.Memory 服务器运行内存统计数据

4.Persistence 持久化信息

5.Stats 通用统计数据

6.Replication 主从复制相关信息

7.CPU CPU 使用情况

8.Cluster 集群信息

9.KeySpace 键值对统计数量信息

127.0.0.1:6379> info
# Server
redis_version:6.2.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:fdd28bd28db05332
redis_mode:standalone
os:Linux 3.10.0-1160.41.1.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:10.2.1
process_id:1
process_supervised:no
run_id:aab8921018c8bc6d3da65cfc8e4d92173f656667
tcp_port:6379
server_time_usec:1653745310451756
uptime_in_seconds:5981287
uptime_in_days:69
hz:10
configured_hz:10
lru_clock:9578142
executable:/data/redis-server
config_file:/usr/local/etc/redis.conf
io_threads_active:0

# Clients
connected_clients:2 #当前连接数
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:32
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0

# Memory
used_memory:920312
used_memory_human:898.74K
used_memory_rss:3059712
used_memory_rss_human:2.92M
used_memory_peak:1732344
used_memory_peak_human:1.65M
used_memory_peak_perc:53.13%
used_memory_overhead:851104
used_memory_startup:810088
used_memory_dataset:69208
used_memory_dataset_perc:62.79%
allocator_allocated:964152
allocator_active:1228800
allocator_resident:3600384
total_system_memory:4142100480
total_system_memory_human:3.86G
used_memory_lua:37888 # Redis分配的内存总量(byte),包含redis进程内部的开销和数据占用的内存
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.27
allocator_frag_bytes:264648
allocator_rss_ratio:2.93
allocator_rss_bytes:2371584
rss_overhead_ratio:0.85
rss_overhead_bytes:-540672
mem_fragmentation_ratio:3.49
mem_fragmentation_bytes:2182160
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_clients_slaves:0
mem_clients_normal:41016
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:244
rdb_bgsave_in_progress:0
rdb_last_save_time:1648010183
rdb_last_bgsave_status:err
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:307200
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:16094
total_commands_processed:1272
instantaneous_ops_per_sec:0 #每秒命令数
total_net_input_bytes:354548
total_net_output_bytes:917925
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:12
expired_stale_perc:0.00
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:139396
evicted_keys:0
keyspace_hits:2
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:426
total_forks:956523
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:17444
dump_payload_sanitizations:0
total_reads_processed:32909
total_writes_processed:16682
io_threaded_reads_processed:0
io_threaded_writes_processed:0

# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:bc9570d83101478a9f2c3e06621fd4f89922bba3
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:4533.539237
used_cpu_user:5258.822171
used_cpu_sys_children:354.305248
used_cpu_user_children:288.748708
used_cpu_sys_main_thread:4531.954658
used_cpu_user_main_thread:5257.710509

# Modules

# Errorstats
errorstat_ERR:count=1646
errorstat_MISCONF:count=20
errorstat_NOAUTH:count=15175
errorstat_WRONGPASS:count=603

# Cluster
cluster_enabled:0

# Keyspace

5.命令提示

在这里插入图片描述

三、应用场景

1.字符串操作

·单值缓存
·对象缓存(JsonString)
·分布式锁
·计数器

单值缓存

# 1.插入字符串键值对
set myKey moon
# 2.批量插入字符串键值对
mset k1 v1 k2 v2 k3 v3
# 3.插入一个不存在的键值对,成功返回 1 失败返回 0
setnx k1 v
# 4.获取值
get mykEY
# 5.批量获取值
mget k1 k2 k3
# 6.或取所有键
keys *
# 7.删除键(支持多个) 返回成功个数
del k1 k2
# 8.设置一个键的过期时间(秒) 成功返回 1 失败返回 0
expire myKey 3

在这里插入图片描述

分布式锁

set product:001 true ex 5 nx

在这里插入图片描述

计数器(点赞量、阅读量、序列号生成)

# 1.设置值(页面访问数)
set pv 0
# 2.值加 1 并返回当前值
incr pv
# 3.值减 1 并返回当前值
decr pv
# 4.加指定值 并返回当前值
incrby pv 3
# 5.减指定值 并返回当前值
decrby pv 2
# 查看结果
get pv

在这里插入图片描述

2.Hash缓存

·将多个 field-value (字段-值) 对设置到哈希表中

优缺点

优点
同类数据归类整合储存,方便数据管理:类似于表
相比string操作消耗内存与cpu更小、更节省储存空间
缺点
过期功能不能使用在field上,只能用在key上
Redis集群架构下不适合大规模使用

数据存储

# 1.模拟用户表(将id拼接到字段:id:name)
#   支持批量操作
hmset user 1:name moon 1:age 18
hmget user 1:name 1:age
hmget user 1:name
hmset user 2:name sun
hmget user 2:name

在这里插入图片描述

# 1.模拟用户好友消息数量
#   用户ID最为Key 好友ID作为Field 消息数作为Value
hset msg:001 friend:001 1
# 2.消息数加 3 返回当前值
hincrby msg:001 friend:001 3
# 3.朋友总数
hlen msg:001
# 4.清空某个朋友的消息数
hdel msg:001 friend:002
# 5.获取所有未读消息的朋友
hgetall msg:001

在这里插入图片描述

Redis集群模式下的Hash槽简介

单台机器性能不满足业务需求时,我们会考虑集群部署,即数据分片存储;此时对于Hash数据来说,要有一个分片标准:Redis Key 的路由计算公式:slot = CRC16(key) % 16384
CRC16 算法,产生的hash值有 16 bit 位,可以产生 65536(2^16)个值 ,也就是说值分布在 0 ~ 65535 之间
那么为什么槽位数取了 2^14=16384 而不是 2^16=65536
因为集群下,各个主从节点间要进行数据同步,同步过程会包含槽位信息,信息大小如下:
16384÷8÷1024=2kb
65536÷8÷1024=8kb
综合性能、集群容量、网络带宽等,作者将槽位数定为:16384
集群扩容后,槽位调整,会将某些哈希槽挪到新节点;如果插入数据时,当前节点发现当前数据不属于本节点,则会返回正确节点信息给客户端,客户端自动重发到正确节点

3.List列表结构(微博/朋友圈消息流…)

# 1.从左侧插入(先 1 后左侧插入 2 ...)
lpush mnt 1 2 3 4 5
# 2.查看当前值
lrange mnt 0 4
# 3.从右侧插入
rpush mnt 6 7 8 9
# 4.查看当前值
lrange mnt 0 9
# 5.从key列表表头(左侧)弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
blpop mnt 0
# 6.从key列表表尾(右侧)弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
brpop mnt 0
# 模拟常用数据结构
# 栈(先进后出):lpush + lpop 或 rpush + rpop
# 队(先进先出):lpush + rpop 或 rpush + lpop
# 阻塞队列:lpush + brpop 或 rpush + blpop

在这里插入图片描述

Set集合结构

抽奖(将用户添加到集合内,随机选取3个)

# 1.添加、删除、查看元素
sadd mnt 1 2 3
srem mnt 1
smembers mnt
# 2.获取元素个数
scard mnt
# 3.判断是否属于集合 否 0 是 1
sismember mnt 1
# 4.从集合中随机获取count个元素,不删除
sadd mnt 0 1 2 3 4 5 6 7 8 9
srandmember mnt 3
# 5.从集合中随机获取count个元素,删除
spop mnt 3

在这里插入图片描述

共同关注人|按产品属性多条件筛选(交集)、可能认识的人(差集)

# 1.求两个集合交集
sadd qps 4 11 7 2
sinter mnt qps
# 2.将交集写入新集合(destination)
sinterstore destination mnt qps
# 3.求两个集合并集
sunion mnt qps
# 4.将并集写入新集合(destination)
sunionstore dest mnt qps
# 5.求差集:从左侧集合中减去被右侧集合包含的元素
sdiff mnt qps
# 6.将差集写入新集合(destination)
sdiffstore des mnt qps

在这里插入图片描述

5.Zset有序集合

有序集合的分数(score)可以重复,但成员是唯一的

# 1.添加元素 1分 数学 3分 语文 2分 英语
zadd mnt 1 math 3 chinese 2 english
# 2.删除元素
zrem mnt math
# 3.获取元素分数
zscore mnt english
# 4.修改元素分数 +4分 语文
zincrby mnt 4 chinese
# 5.获取元素个数
zcard mnt
# 6.正序获取指定区间元素
zrange mnt 0 1
# 7.倒序获取指定区间元素
zrevrange mnt 0 1

在这里插入图片描述
排行榜前10

# 1.添加元素(先清空原来的键)
zadd mnt 1 a 2 b 3 c
zadd qps 4 d 5 e 6 f 7 a
# 2.交集:zunionstore destkey numkeys key
zinterstore dest 2 mnt qps
# 3.并集:zunionstore destkey numkeys key
zunionstore dest 2 mnt qps

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-04 00:01:46  更:2022-06-04 00:03:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/29 7:59:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码