Redis 精简笔记本文档仅为 Redis 基础教程,更多内容请参考:Redis中文网一、概述Redis 是一款高性能的 NoSQL 系列的非关系型数据库! 获取连接Jedis jedis = new Jedis();// 2. 获取连接Jedis jedis = new Jedis();// 2. 获取连接Jedis jedis = new Jedis();// 2. 获取连接Jedis jedis = new Jedis();// 2.
20 visitors 2300 OK 127.0.0.1:6379> HGETALL w3ckey 1) "name" 2) "redis tutorial" 3) "description" 4) Redis hash 命令 命令 描述 HDEL key field2 [field2] 删除一个或多个哈希表字段 HEXISTS key field 查看哈希表 key 中,指定的字段是否存在 HGET 1) "mysql" 2) "mongodb" 3) "redis" Redis 列表命令 命令 描述 BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 (integer) 0 127.0.0.1:6379> ZRANGEBYSCORE redis 0 1000 1) "mongo" 2) "rabitmq" 3) "redis" Redis 集合命令 " 2) "1" 3) "mongodb" 4) "2" 5) "mysql" 6) "4" Redis 有序集合命令 命令 描述 ZADD key score1 member1 [score2 member2
2. 2. 2. 2. conn = DriverManager.getConnection("jdbc:mysql:2F;2F;2F;db2", "root"
5E2,num3=1.23e-3. toFixed(2) + "
")
document.write("保留小数点后2位: " + num3.toFixed(2))
</script>
</body>
◆字符串型 = "ok";
if(num1 == num2 || num2 == num2){
document.write("或运算的比较结果...") "num1 大于 num2" + " 比num2多出:" + temp)
}else if(num2 > num3){
var temp = num2 - ')">
<input type="button" id="button<em>2</em>" value="按钮<em>2</em>" onclick="alert('按钮<em>2</em>被按下了...
是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一,该笔记用于生产环境快速查阅 创建一个表table_2,在表中的name字段上创建单列索引. 'rui'); Query OK, 2 rows affected (0.33 sec) Records: 2 Duplicates: 0 Warnings: 0 MariaDB [lyshark ,我们比如要删除view_tab1和view_tab2两个视图. MariaDB [lyshark]> insert into account values(1,1.00),(2,2.00); Query OK, 2 rows affected (0.01 sec)
是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一,该笔记用于生产环境快速查阅 将name字段与deptid字段组合在一起,成为tab_2的多字段联合主键. 实例2: 分别创建整形的数据类型字段看看. MEDIUMTEXT 中等非二进制字符串 L+3字节 LONGTEXT 大的非二进制字符串 L+4字节 ENUM 枚举类型 l或2个字节 SET SET成员类型 1,2,3,4或8个字节 CHAR和 关于TEXT类型的取值范围: ● TINYTEXT 最大长度为255(2^8-1)字符的TEXT列. ● TEXT 最大长度为65535(2^16-1)字符的TEXT列.
是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一,该笔记用于生产环境快速查阅 ,数据类型为INT,使用SET为变量赋值,代码如下: DECLARE var1,var2,var3 INT; MariaDB [lyshark]> set @var1=10,@var2=30; Query -----------+ | abs(2) | abs(-10.5) | abs(-100) | +--------+------------+-----------+ | 2 | MariaDB [lyshark]> select if(1>2,2,3), -> if(1<2,'yes','no'), -> if(strcmp('test','test1'),'no ','yes'); +-------------+--------------------+---------------------------------------+ | if(1>2,2,3)
基础知识 Redis 通常被描述为一个“键值对”方式的存储的内存型数据库。然而它不仅仅如此,它也可以把数据写到硬盘上用以持久化。 在 Redis 提供的五种不同的数据结构中,典型的是键值对结构。 1.1 数据库(Databases) Redis也有数据库的概念,数据库是包含一组数据的集合。 在 Redis 中,通过一个数字来标识数据库,默认开始标识是 0。 Redis 会响应一个 OK 。 value 可以是任何类型 - Redis 根本不需要去理解他们。 基于此,我们来理解 Redis ,考虑它是否适合我们的数据建模,和它所适用的场景。 2.增量 Redis 支持增量模式。一旦 key 发生变化,一个增量包会更新到硬盘上。
redis为了追求高性能,采用渐进式rehash。它会保留新旧2个hash结构,查询时会同时查询2个hash,然后在定时任务中循序渐进的将旧的hash迁移到新的hash中。 二、redis事务 不支持回滚 三、redis单线程 优点: 快、避免创建销毁线程的消耗、避免CPU上下午切换、避免资源竞争(加锁、死锁) 缺点: 执行lua有死循环风险,整个redis服务端都会被阻塞 官网说:cpu不是redis的瓶颈,内存和网络才是,单核已经够用了 四、redis为什么快? 的持久化机制有2种: RDB AOF 7.1 RDB 7.1.1、什么是RDB RDB 是redis默认的持久化方案。 redis会fork一个子进程,从redis数据中重建一个AOF临时文件,最后用临时文件替换旧文件。
是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一,该笔记用于生产环境快速查阅 enum(N,Y) NO DB表用户列有3个字段,分别是Host、User、Db标识从某个主机连接某个用户对某个数据库的操作权限,这3个字段的组合构成了db表的主键.host表不存储用户名称,用户列只有2个字段 0.000 | +----+---------+-----------+------+---------+------+-------+------------------+----------+ 2 23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | +---------+-------------------------------------------+ 2 affected (0.00 sec) MariaDB [(none)]> show grants for "wang2"@"%"; +-------------------------------
是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一,该笔记用于生产环境快速查阅 6.40 | | b2 | 104 | berry | 7.60 | | m2 | 105 | xbabay | 2.60 | | bs2 | 105 o2 | 103 | coconut | 9.20 | | b2 | 104 | berry | 7.60 | | l2 | 104 | lemon | 6.40 '匹配2个或多个b 字符串{n,m} 匹配前面字符至少出现n次不大于m次 'b{2,3}'匹配最少2个,最多3个b 以上就是MariaDB所支持的所有匹配通配符,这里内容虽然较少,但是还是要独立出来一个章节 | 103 | apricot | 2.20 | | bs2 | 105 | melon | 8.20 | | l2 | 104 | lemon | 6.40 | | o2 | 103
在 Windows 系统的持续演进中,Windows 11 Pro 64 24H2 版本的推出,为用户带来了诸多新特性与功能。 然而,原版系统在实际使用过程中,依然暴露出一系列令用户困扰的痛点,深度精简版的 Windows 11 Pro 64 24H2 正是为有效解决这些痛点而诞生。 二、深度精简 Windows 11 Pro 64 24H2 的作用(一)显著提升系统性能深度精简版通过去除大量不必要的组件和服务,极大地降低了系统对硬件资源的占用。 (三)增强个性化定制深度精简的 Windows 11 Pro 64 24H2 为用户提供了更丰富的个性化设置选项。 例如,一些原本在原版系统上无法正常运行的 CAD 软件,在深度精简版系统中能够稳定运行,为专业用户解决了软件使用的难题。
$lt_img = get_lt($halfWidth); //改造$img2 左上角圆角透明 imagecopymerge($img2, $lt_img, 0, 0, 0, 0, $halfWidth 223, 0, 0); //去除参数二中红色设成透明 imagecolortransparent($img2, $red); imagecopymerge($img1, $img2, 117,37,0,0 2.常量名可以小写,但是通常大写 3.常量名可以不加引号,但是通常加上引号。 > 2.注意项目实验 <? php $x = false; $y = 2; if($x && $y++){ echo '真'; }else{ echo '假'; } //结果还为2,说明没有执行$y++ echo $
:6379> incr counter (integer) 1 第3个窗口输入: 127.0.0.1:6379> incr counter (integer) 2 因为在redis中是单线程来处理命令的 2、非阻塞I/O,redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的时间处理模型将epoll中的连接、读写、关闭都转换为时间,不在网络I/O上浪费过多的时间。 redis的查询模型分为4步: 1、发送命令 2、排队 3、执行命令 4、返回结果 redis的慢查询只统计步骤3的时间。 慢查询的2个配置参数 对于慢查询,redis配置了2个关键参数,其中第一个是慢查询的阈值:slowlog-log-slower-than和slowlog-max-len配置来解决这两个问题。 在redis中,有2种修改参数的方法,第一种是修改配置文件,另一种是使用config set命令动态修改,如果要将redis的配置持久化到本地的配置文件,则需要执行config rewrite的命令。
redis提供了几乎所有主流语言的client,java中主要使用二种:Jedis与Redisson 一、Jedis的使用 1 <dependency> 2 <groupId >redis.clients</groupId> 3 <artifactId>jedis</artifactId> 4 <version>2.6.0</version <scope>compile</scope> 7 </dependency> pom.xml中添加上面的依赖项就行了,下面是示例代码: 1 @Test 2 10.6.144.xxx", 7030); 5 6 // String测试 7 System.out.println(jedis.get("foo")); // 首次获取,redis /redis-cli keys \* 将返回所有的缓存keys,可用于遍历所有缓存项,Jedis支持keys命令: Set<String> keys= jedis.keys("*");
上一次分享的如何通过代码分析精简用例主要是针对WEB侧逻辑复用,从而精简冗余用例的案例。 本次的案例分享是希望通过对SVR代码的分析,完成用例执行的精简。 获取用户画像使用次数,判断使用次数是否小于配额,如果不小于配额则返回没有配额,否则自增使用次数写入redis后返回。 customer_profile_processor.cpp [1504062498587_3645_1504062498834.png] 用例精简: 拿两个用例来举例: 登录工号A,拨打B2C 通过代码分析后,我们的执行则可以变成: (前提:拨打一次B2C后),拨打同一号码,用户画像使用次数是否增加。 (前提:拨打一次B2C后),拨打不同号码,用户画像使用次数是否增加。 用户画像使用次数的查询,如果直接去通过命令行去查redis是比较麻烦的,从代码里我们可以看到开发其实是把查询结果写进了日志。我们可以通过日志比较直观的看到查询结果。
Redis能干嘛 1、内存存储,持久化,内存中是断电即失,所以说持久化很重要(rdb、aof) 2、效率高,可以用于高速缓存 3、发布订阅系统 4、地图信息分析 5、计时器、计数器(浏览量) 启动redis 1、基于内存操作,所有的运算都是内存级别的,所以性能比较高 2、数据结构简单,这些简单的数据结构的查找和操作的时间复杂度都是O(1) 3、多路复用和非阻塞IO,redis使用IO多路复用功能来监听多个socket v2 k3 v3 #同时设置多个值 OK 127.0.0.1:6379> keys * 1) "k3" 2) "k2" 3) "k1" 127.0.0.1:6379> mget k1 k2 k3 ##同时获取多个值 exec #执行事务 1) OK 2) OK 3) "v2" 4) OK 放弃事务 DISCARD 取消事务。 2、海量数据的存储压力 单实例Redis本质上只有一台Master作为存储,如果面对海量数据的存储,一台Redis的服务器就应付不过来了,而且数据量太大意味着持久化成本高,严重时可能会阻塞服务器,造成服务请求成功率下降
《redis开发与运维》笔记 用info命令查看详细信息 获取慢查询命令slowlog get [n] ,n为取出来的条数。 在配置文件中有两个关键参数,一个是slowlog-slower-than和 slowlog-max-len(慢日志最大的数量) 每隔一秒显示redis的内存使用量 并重复5次: redis-cli -r RDB的优点:1)是个紧凑的二进制文件,代表在redis在某个时间点的快照,适用于备份,全量复制等场景。2)加载速度远快于AOF方式。 缺点:1)由于开销较大,没办法做到实时持久化/秒级持久化 2)由于redis历史版本问题,导致老的redis服务不兼容新的RDB版本 AOF适用于秒级持久化。 redis属于CPU密集型操作,不要和其他CPU密集型服务放在一起,造成CPU过度竞争。
总结:线上严禁使用redis的keys命令 keys checkvariantprefix:* redis-cli -h host -p port -a password redis-cli //redis $lotteryType; //字符串 //添加有效期时间 redisSet Redis::getInstance()->redisSet($key, json_encode($data), 60 = Redis::getInstance()->redisGet($key); //有序集合 //添加 自增1redisZincrby 小于次数,就增加金豆,并且自增1 Redis::getInstance ($key); //删除指定分数userId数据redisZrem Redis::getInstance()->redisZrem($key, $userId); 复制代码 Redis容量预估工具 www.redis.cn /redis_memor…
负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下, 通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。 nodes 884181f538839b57f8c1a87bb2283a91a9d9c8fb 127.0.0.1:7000@17000 myself,master - 0 1640615250000 2 cluster_slots_fail:0 cluster_known_nodes:4 cluster_size:0 cluster_current_epoch:3 cluster_my_epoch:2 nodes 884181f538839b57f8c1a87bb2283a91a9d9c8fb 127.0.0.1:7000@17000 myself,master - 0 1640617981000 2