JAVA记录-redis缓存机制介绍(三)
Redis 事务
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:
- 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
- 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
一个事务从开始到执行会经历以下三个阶段:
- 开始事务。
- 命令入队。
- 执行事务。
实例
以下是一个事务的例子, 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:
redis 127.0.0.1:6379> MULTI
OK redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED redis 127.0.0.1:6379> GET book-name
QUEUED redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED redis 127.0.0.1:6379> SMEMBERS tag
QUEUED redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
2) "C++"
3) "Programming"
Redis 事务命令
下表列出了 redis 事务的相关命令:
| 序号 | 命令及描述 |
|---|---|
| 1 | DISCARD 取消事务,放弃执行事务块内的所有命令。 |
| 2 | EXEC 执行所有事务块内的命令。 |
| 3 | MULTI 标记一个事务块的开始。 |
| 4 | UNWATCH 取消 WATCH 命令对所有 key 的监视。 |
| 5 | WATCH key [key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 |
Redis 脚本
Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
语法
Eval 命令的基本语法如下:
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
实例
以下实例演示了 redis 脚本工作过程:
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"
Redis 脚本命令
下表列出了 redis 脚本常用命令:
| 序号 | 命令及描述 |
|---|---|
| 1 | EVAL script numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。 |
| 2 | EVALSHA sha1 numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。 |
| 3 | SCRIPT EXISTS script [script ...] 查看指定的脚本是否已经被保存在缓存当中。 |
| 4 | SCRIPT FLUSH 从脚本缓存中移除所有脚本。 |
| 5 | SCRIPT KILL 杀死当前正在运行的 Lua 脚本。 |
| 6 | SCRIPT LOAD script 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。 |
Redis 连接
Redis 连接命令主要是用于连接 redis 服务。
实例
以下实例演示了客户端如何通过密码验证连接到 redis 服务,并检测服务是否在运行:
redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
Redis 连接命令
下表列出了 redis 连接的基本命令:
| 序号 | 命令及描述 |
|---|---|
| 1 | AUTH password 验证密码是否正确 |
| 2 | ECHO message 打印字符串 |
| 3 | PING 查看服务是否运行 |
| 4 | QUIT 关闭当前连接 |
| 5 | SELECT index 切换到指定的数据库 |
Redis 服务器
Redis 服务器命令主要是用于管理 redis 服务。
实例
以下实例演示了如何获取 redis 服务器的统计信息:
redis 127.0.0.1:6379> INFO # Server
redis_version:2.8.13
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:c2238b38b1edb0e2
redis_mode:standalone
os:Linux 3.5.0-48-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.7.2
process_id:3856
run_id:0e61abd297771de3fe812a3c21027732ac9f41fe
tcp_port:6379
uptime_in_seconds:11554
uptime_in_days:0
hz:10
lru_clock:16651447
config_file: # Clients
connected_clients:1
client-longest_output_list:0
client-biggest_input_buf:0
blocked_clients:0 # Memory
used_memory:589016
used_memory_human:575.21K
used_memory_rss:2461696
used_memory_peak:667312
used_memory_peak_human:651.67K
used_memory_lua:33792
mem_fragmentation_ratio:4.18
mem_allocator:jemalloc-3.6.0 # Persistence
loading:0
rdb_changes_since_last_save:3
rdb_bgsave_in_progress:0
rdb_last_save_time:1409158561
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:24
total_commands_processed:294
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:41
keyspace_misses:82
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:264 # 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:10.49
used_cpu_user:4.96
used_cpu_sys_children:0.00
used_cpu_user_children:0.01 # Keyspace
db0:keys=94,expires=1,avg_ttl=41638810
db1:keys=1,expires=0,avg_ttl=0
db3:keys=1,expires=0,avg_ttl=0
Redis 服务器命令
下表列出了 redis 服务器的相关命令:
| 序号 | 命令及描述 |
|---|---|
| 1 | BGREWRITEAOF 异步执行一个 AOF(AppendOnly File) 文件重写操作 |
| 2 | BGSAVE 在后台异步保存当前数据库的数据到磁盘 |
| 3 | CLIENT KILL [ip:port] [ID client-id] 关闭客户端连接 |
| 4 | CLIENT LIST 获取连接到服务器的客户端连接列表 |
| 5 | CLIENT GETNAME 获取连接的名称 |
| 6 | CLIENT PAUSE timeout 在指定时间内终止运行来自客户端的命令 |
| 7 | CLIENT SETNAME connection-name 设置当前连接的名称 |
| 8 | CLUSTER SLOTS 获取集群节点的映射数组 |
| 9 | COMMAND 获取 Redis 命令详情数组 |
| 10 | COMMAND COUNT 获取 Redis 命令总数 |
| 11 | COMMAND GETKEYS 获取给定命令的所有键 |
| 12 | TIME 返回当前服务器时间 |
| 13 | COMMAND INFO command-name [command-name ...] 获取指定 Redis 命令描述的数组 |
| 14 | CONFIG GET parameter 获取指定配置参数的值 |
| 15 | CONFIG REWRITE 对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写 |
| 16 | CONFIG SET parameter value 修改 redis 配置参数,无需重启 |
| 17 | CONFIG RESETSTAT 重置 INFO 命令中的某些统计数据 |
| 18 | DBSIZE 返回当前数据库的 key 的数量 |
| 19 | DEBUG OBJECT key 获取 key 的调试信息 |
| 20 | DEBUG SEGFAULT 让 Redis 服务崩溃 |
| 21 | FLUSHALL 删除所有数据库的所有key |
| 22 | FLUSHDB 删除当前数据库的所有key |
| 23 | INFO [section] 获取 Redis 服务器的各种信息和统计数值 |
| 24 | LASTSAVE 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示 |
| 25 | MONITOR 实时打印出 Redis 服务器接收到的命令,调试用 |
| 26 | ROLE 返回主从实例所属的角色 |
| 27 | SAVE 异步保存数据到硬盘 |
| 28 | SHUTDOWN [NOSAVE] [SAVE] 异步保存数据到硬盘,并关闭服务器 |
| 29 | SLAVEOF host port 将当前服务器转变为指定服务器的从属服务器(slave server) |
| 30 | SLOWLOG subcommand [argument] 管理 redis 的慢日志 |
| 31 | SYNC 用于复制功能(replication)的内部命令 |
JAVA记录-redis缓存机制介绍(三)的更多相关文章
- JAVA记录-redis缓存机制介绍(四)
Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 re ...
- JAVA记录-redis缓存机制介绍(一)
1.redis介绍 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Re ...
- JAVA记录-redis缓存机制介绍(二)
Redis 集合(Set) Redis的Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度 ...
- redis锁机制介绍与实例
转自:https://m.jb51.net/article/154421.htm 今天小编就为大家分享一篇关于redis锁机制介绍与实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要 ...
- java包装类的缓存机制(转)
出处: java包装类的缓存机制 java 包装类的缓存机制,是在Java 5中引入的一个有助于节省内存.提高性能的功能,只有在自动装箱时有效 Integer包装类 举个栗子: Integer a = ...
- Java 使用Redis缓存工具的图文详细方法
开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. (1)Java的安装配置可以参考我们的 Java ...
- [转]session缓存机制和三种对象状态
摘自 http://blog.csdn.net/csh624366188/article/details/7612142 Hibernate 的Session就是其中的一个,它提供了基本的增,删,改, ...
- 1.2_springboot2.x中redis缓存&原理介绍
1.整合redis作为缓存 说明这里springboot版本2.19 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构 ...
- Redis缓存机制
Redis介绍 Redis是一款内存高速缓存数据库: 数据模型为:key - value,非关系型数据库使用的存储数据的格式: 可持久化:将内存数据在写入之后按照一定格式存储在磁盘文件中,宕机.断电后 ...
随机推荐
- CentOS7.3安装rz、sz命令
安装命令: yum install lrzsz 关于rz.sz: lrzsz是一款在linux里可代替ftp上传和下载的程序.lrzsz是一个unix通信套件提供的X,Y,和ZModem文件传输协议. ...
- shell之重定向
使用>和>>都表示向结果重定向到一个文件中,区别在于>是覆盖式的重定向,会先将内容先清空,然后再将结果输入,而>>是追加式的重定向,是将要输入的内容追加在在已存在的 ...
- PAT 1036 跟奥巴马一起编程
https://pintia.cn/problem-sets/994805260223102976/problems/994805285812551680 美国总统奥巴马不仅呼吁所有人都学习编程,甚至 ...
- ASP.NET Web Service 标准SOAP开发案例代码(自定义验证安全头SOAPHeader)
using System.Xml;using System.Xml.Serialization;using System.Web.Services.Protocols;using System.Con ...
- Spring MVC (Java),强制页面不缓存
response.setDateHeader("Expires",0); response.setHeader("Buffer","Tr ...
- ASP.NET MVC与WebForm对比
MVC优点:1.分离更彻底,分层清晰,易于维护和扩展.2.验证更加方便快捷.3.无ViewState,页面更加干净4.路由更容易定义url,对SEO比较好.5.强类型VIEW实现,更安全高效. Web ...
- 关于Windows 2019 antimalware 进程占用CPU 过多的处理方法 关闭windows 病毒防护的方法
0. 客户端打开报错 重启之后 响应速度很慢. 解决办法: 1. 打开组策略 gpedit.msc 2. 选择位置为 3. 查看 进程里面后台程序 antimalware 进程消失 即可
- [转帖]UML各种图总结-精华
UML各种图总结-精华 https://www.cnblogs.com/jiangds/p/6596595.html 之前自己以为画图很简单 不需要用心学 现在发现自己一直没有学会一些基础的知识 能力 ...
- PP生产订单成本的计划、控制和结算
SAP系统成本分析功能关注订单的成本,通过对计划成本和实际成本的比较分析,可以发现成本控制上的问题,以便及时解决问题.1.订单成本计划在基础数据齐全的基础上,系统可以自动滚算生产订单的成本.生产订单计 ...
- 软件破解入门(暴力破解CrackMe)
---恢复内容开始--- 所谓暴力破解,就是通过修改汇编代码进而控制程序的运行流程,达到不需注册码也能正常使用软件的目的.相对于解出算法进而编写注册机,暴破的技术含量是比较低的.但也正是因为一本05年 ...