首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏DBA随笔

    Redis开发与运维学习笔记---(3)

    Redis-cli详解 Redis提供了redis-cli、redis-server、redis-benchmart等shell工具,今天对这些工具做下介绍。 [root@VM_48_10_centos ~]# redis-cli -r 3 ping PONG PONG PONG -i -i(interval)选项代表每隔几秒执行一次命令,但是-i选项必须和 -r选项一起使用,下面每隔1s执行一次ping命令: [root@VM_48_10_centos ~]# redis-cli -r 3 -i 2 ping PONG PONG PONG 其中,单位为秒 --latency 该参数有3个选项,分别是--latency,--latency-history以及--latency-dist,其中: --latency选项可以测试客户端到目标redis的网络延迟 例如: redis-server --port 6380 3、配置文件启动 redis-server /dir/redis.conf 除了启动redis之外,还有一个选项--test-memory,

    53420发布于 2020-03-31
  • 来自专栏兜兜毛毛

    Redis List(3

    127.0.0.1:6379> lpush list a (integer) 1 127.0.0.1:6379> lpush list b c (integer) 3 127.0.0.1:6379> object fill factor for individual nodes */ unsigned int compress : 16; /* 压缩深度 0: 不压缩 */ } quicklist; redis.conf -1:4KB;-2:8KB;-3:16KB;-4:32KB;-5:64KB| |list-compress-depth(compress)|压缩深度,默认是0。

    69020发布于 2020-03-19
  • 来自专栏Golang开发

    Redis(3)——hash

    Redis中,哈希类型(hash)是指健值本身又是一个健值对结构,哈希类型中的映射关系叫做filed-value.这里的value是指filed对应的值,不是健对应的值。 > hvals user_1 1) "xiaoming" 2) "boy" hgetall hgetall key获取所有的filed-value,如果使用hgetall 哈希元素过多的话,会存在阻塞Redis integer) 1 127.0.0.1:6379> hlen user_1 (integer) 2 hmset hmset key field1 value1 filed2 value2 filed3 ziplist 压缩列表:当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个),同时所有值都小于hash-max-ziplist-value配置(默认64个字节)redis hashtable 哈希表 当哈希类型无法满足ziplist的条件是,redis会使用hashtable作为哈希的内部实现。

    75820发布于 2019-05-29
  • 来自专栏ops技术分享

    redis原理(3

    传统的取模方式 例如10条数据 0 1 2 3 4 5 6 7 8 9 3个节点node a b c 如果按照取模的方式,那就是 node a: 0,3,6,9 node b: 1,4,7 node c : 2,5,8 当增加一个节点的时候,数据分布就变更为 node a:0,4,8 node b:1,5,9 node c: 2,6 node d: 3,7 总结:数据3,4,5,6,7,8,9在增加节点的时候 十条数据,算出各自的哈希值,(这里就不变了,实际上要经过一系列计算) 0 : 0 1 : 1 2 : 2 3 : 3 4 : 4 5 : 5 6 : 6 7 : 7 8 : 8 9 : 9 有三个节点, 这个范围 一般远远大于节点数, 比如Redis Cluster槽范围是0~16383。 槽是集群内数据 管理和迁移的基本单位。 采用大范围槽的主要目的是为了方便数据拆分和集 群扩展。 Redis Cluster就是采用虚拟槽分区, 下面就介绍Redis数 据分区方法。 redis将每个数据放到一个槽中,而很多槽放到节点中。当槽进行扩容,只需要把某些槽迁移到新节点即可。

    39300发布于 2021-05-18
  • 来自专栏ops技术分享

    redis入门(3

    Redis高性能原因 1.基于内存的访问,非阻塞I/O,Redis使用事件驱动模型epoll多路复用实现,连接、读写、关闭都转换为事件不在网络I/O上浪费过多的时间 2.单线程避免的高并发的时候,多线程有锁的问题和线程切换的 3.使用C语言编写,更好的发挥服务器性能,并且代码简洁,性能高 三.特点 Redis支持多种数据类型,适应更多的场景需求。 提供了流水线(Pipeline) 功能, 这样客户端能将一批命令一次性传到 Redis, 减少了网络的开销。

    28000发布于 2021-05-18
  • 来自专栏技术杂记

    Redis 复制3

    RDB给slave,不过目前这个特性还处于实验性阶段关于无盘同步,目前只有两个参数进行控制:repl-diskless-syncrepl-diskless-sync-delay关于这两个参数的说明, redis.conf the master to the slaves.# The transmission can happen in two different ways:## 1) Disk-backed: The Redis is transferred by the parent# process to the slaves incrementally.# 2) Diskless: The Redis

    28610编辑于 2022-07-09
  • 来自专栏python3

    Redis教程(3

    "   redis 127.0.0.1:6379> hget myhash field3   (nil)   redis 127.0.0.1:6379>   由于数据库没有field3,所以取到的是一个空值 redis 127.0.0.1:6379> hmget myhash field1 field2 field3 1) "Hello" 2) "World" 3) (nil)   redis redis 127.0.0.1:6379> hset myhash field3 20   (integer) 1   redis 127.0.0.1:6379> hget myhash field3 myhash field3 "12"   redis 127.0.0.1:6379>   在本例中我们将field3的值从20降到了12,即做了一个减8的操作。   redis 127.0.0.1:6379> hkeys myhash 1) "field2" 2) "field" 3) "field3"   redis 127.0.0.1:6379>

    71520发布于 2020-01-09
  • 来自专栏python3

    Redis-3. Redis高级命令

    提高系统的延伸性 2、主从复制过程: 1)slave与master建立连接,发送sync同步命令; 2)master开启后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存; 3) 后台完成保存后,就将文件发送给slave; 4)slave将此文件保存到硬盘上; 3、主从复制配置: 准备3台linux服务器,分别192.168.90.121(主)、192.168.90.122、192.168.90.123 redis2.6以后提供了一个哨兵机制。哨兵的含义就是监控redis系统的运行状况,主要功能有两点: 1. 监控主数据库和从数据库是否运行正常。 2. /usr/local/redis/etc/sentinel.conf --sentinel & (3)查看哨兵相关信息 [root@wlan121 bin]# redis-cli -h 192.168.1.122 -p 26379 info Sentinel 高级命令六:持久化    redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。

    53610发布于 2020-01-14
  • 来自专栏业余草

    Redis开发规范

    3、合理使用select redis的多数据库较弱,使用数字进行区分,很多客户端支持较差,同时多业务用多数据库实际还是单线程处理,会有干扰。 5、不建议过多使用Redis事务功能 Redis的事务功能较弱(不支持回滚),而且集群版本(自研和官方)要求一次事务操作的key必须在一个slot上(可以使用hashtag功能解决) 6、Redis集群版本在使用 = null) jedis.close(); } 3、熔断功能 高并发下建议客户端添加熔断功能(例如netflix hystrix) 4、合理的加密 设置合理的密码,如有必要可以使用SSL 四、相关工具 1、数据同步 redis间数据同步可以使用:redis-port 2、big key搜索 redis大key搜索工具 3、热点key寻找 内部实现使用monitor,所以建议短时间使用facebook (bigListKey, left, llen); counter += left; } //最终删除key jedis.del(bigListKey); } 3

    1K30发布于 2020-06-15
  • 来自专栏python3

    redis演练(3) redis事务管理

    redis vs memcached。 redis与memcached对比,redis不仅适合做缓存,而且可以做存储,这就有点数据库的影子了。说到数据库,事务是一个很重要的一个方面。 本文主要演练下redis对事务的支持效果。 1 相关命令 ? 命令 作用 可用版本 时间复杂度 返回值 WATCH key [key ...] Redis 在事务失败时不进行回滚,而是继续执行余下的命令” 如果你有使用关系式数据库的经验, 那么 “Redis 在事务失败时不进行回滚,而是继续执行余下的命令”这种做法可能会让你觉得有点奇怪。 以下是这种做法的优点: Redis 命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或是命令用在了错误类型的键上面:这也就是说,从实用性的角度来说,失败的命令是由编程错误造成的,而这些错误应该在开发的过程中被发现 因为不需要对回滚进行支持,所以 Redis 的内部可以保持简单且快速。 2.discard,"丢弃”意思。表示“上面的命令,统统都不要了”有点rollback的影子,但又不是。

    59740发布于 2020-01-07
  • 来自专栏写代码和思考

    Redis 学习总结(3) Redis 哨兵模式

    背景 在实际开发中不会仅仅部署一个 Redis 示例,为了获得高可用,Redis 哨兵模式 则是高可用的一种选择。 本文先介绍下 哨兵模式,再介绍了如何在 springboot 项目中使用。 #2号 |------+------| Redis #3号 | | 哨兵 #2号 | | 哨兵 #3号 | +------------+ +- 2、配置哨兵 3、客户端访问 下面再分别描述。 2.3 配置 Redis 的主从复制 我这里按三个 节点,先配置 redis 的主从复制。1个节点作为 master ,2个副本。 dbfilename dump-6380.rdb replicaof 127.0.0.1 6379 配置节点3:副本 编辑一个 box3/redis.conf 文件,主要配置内容如下: port 6381 停止后,从日志可以看到,哨兵和 redis副本先努力继续连接 6379,反复几次失败后,开始选举出新的 master。截图如下: ? 至此,配置完毕。 3.

    1.4K30发布于 2021-07-27
  • 来自专栏技术博文

    一、redis 初识-3.redis配置

    " 3) "requirepass" 4) "" 5) "masterauth" 6) "" 7) "cluster-announce-ip" 8) "" 9) "unixsocket / critical messages are logged) # 日志记录等级,4个可选值debug,verbose,notice,warning # 可以是下面的这些值: # debug (适用于开发或测试阶段 enough slaves # are available, to the specified number of seconds # # For example to require at least 3 slaves with a lag <= 10 seconds use: # # min-slaves-to-write 3 # min-slaves-max-lag 10 # # Setting one of 5 produces good enough results. 10 Approximates very closely # true LRU but costs a bit more CPU. 3

    93610发布于 2021-06-22
  • 来自专栏python3

    Redis系列--3Redis数据类型

    yiibai points 200 OK redis 127.0.0.1:6379> HGETALL user:11) "username" 2) "yiibai" 3) "password" 4) "  mongodb (integer) 2 redis 127.0.0.1:6379> lpush tutoriallist rabitmq (integer) 3 redis 127.0.0.1:6379 > lrange tutoriallist 0 101) "rabitmq" 2) "mongodb" 3) "redis" 列表的最大长度为232- 1元素(4294967295,每个列表中的元素超过 " 3) "redis" 注意:在上面的例子中rabitmq设置属性加两次,但由于唯一性只加一次。 ) "redis" 2) "mongodb" 3) "rabitmq"

    48220发布于 2020-01-15
  • 来自专栏python3

    redis cluster (3) 配置

    直接调用 rdbSave ,阻塞 Redis 主进程,直到保存完成为止。 当Redis重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。 为了压缩AOF的持久化文件,Redis提供了bgrewriteaof命令。 2)、原因是RDB文件的存储格式和Redis数据在内存中的编码格式是一致的,不需要再进行数据编码工作,所以在CPU消耗上要远小于AOF日志的加载 二、性能与监控 1、redis 是一个单线程的APP, 优先级数字越小 优先级越高)     如果某个shard 宕掉,尽量先启动原slave( 该主机已持久化),然后再启动原 master ,等数据稳定后,再cluster failover  3、关于监控项

    81130发布于 2020-01-15
  • 来自专栏ops技术分享

    redis3.x

    Redis3.2 Redis3.2在2016年5月6日正式发布,相比于Redis3.0主要特征如下: 1) 添加GEO相关功能。 2) SDS在速度和节省空间上都做了优化。 3) 支持用upstart或者systemd管理Redis进程。 4) 新的List编码类型:quicklist。 5) 从节点读取过期数据保证一致性。 6) 添加了hstrlen命令。 Redis3.0 Redis3.0在2015年4月1日正式发布,截止到本书完成已经到3.0.7版本,相比于Redis2.8主要特性如下: Redis3.0最大的改动就是添加Redis的分布式实现Redis Redis Cluster经历了4年才正式发布也是有原因的,具体可以参考Redis Cluster的开发日志 Redis Cluster: Redis的官方分布式实现。 3) lru算法大幅提升。 4) migrate连接缓存, 大幅提升键迁移的速度。 5) migrate命令两个新的参数copy和replace。

    42620发布于 2021-06-17
  • 来自专栏∑小熊猫的博客

    Redis 系列(3) —— Hash

    Hash 散列 Redis 的散列会将一个键和一个散列在数据库里关联起来,用户可以在散列中为任意多个字段设置值。与字符串键一样,散列的字段和值既可以是文本数据,也可以是二进制数据。 获取某个hash 字段值 获取散列值的相关命令格式为 hget key field 【示例】 127.0.0.1:6379> hget hashtest f1 "v1" 3. 获取所有的 field-value 获取所有格的hash 的字段与值的命令格式为 hgetall key 【示例】 127.0.0.1:6379> hgetall hash 1) "k1" 2) "v1" 3) Redis 会使用 ziplist 作为 hash 的内部实现,ziplist 使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比 hashtable 更加优秀 hashtable (哈希表 ): 当哈希类型无法满足 ziplist 的条件时,Redis 就会使用 hashtable 作为哈希的内部实现,因为此时 ziplist 的读写效率会下降。

    62530发布于 2021-09-10
  • 来自专栏E=mc²

    【2019-3-3】Mac启动redis

    启动服务 cd /usr/local/redis-3.0.6 redis-server 新建cmd窗口访问服务 redis-cli

    29510发布于 2020-08-17
  • 来自专栏架构师成长之路

    redis cluster(3)- redis集群管理:伸缩,故障

    redis集群数据分布及槽信息 Redis Cluster中有一个16384长度的槽的概念,他们的编号为0、1、2、3……16382、16383。这个槽是一个虚拟的槽,并不是真正存在的。 #查看一下是否加入成功 redis-cli -c -p 7029 cluster nodes 3. Source node #1:408525165ed0cb15f3fea7a865879d0968d00b04 #原实例ID Source node #2:done 5.验证一下: redis-trib.rb redis-trib.rb del-node 10.80.82.74:7030 923e869b3fda8add429fb200ea00ce94bdbc84e6 7、故障转移 在高可用性方面,Redis 我们可以识别一个集群并使用以下命令将其崩溃: $ redis-cli -p 7000 cluster nodes | grep master 3e3a6cb0d9a9a87168e266b0a0b24026c0aae3f0

    96910编辑于 2022-04-14
  • 来自专栏学习之路

    Redis#3】:Redis 的安装和使用

    可以使用任意文本编辑器打开 3. 127.0.0.1:6379> get key1 "value1" 127.0.0.1:6379> get key2 "value2" 127.0.0.1:6379> get key3 "value3" 会自动切换到 hashtable 编码 3. 内部编码的好处: 可以改进内部编码,而对外的数据结构和命令没有任何影响,这样⼀旦开发出更优秀的内部编码, 无需改动外部数据结构和命令 例如:Redis3.2提供了 quicklist,结合了 ziplist 3. Redis 单线程模型如何支持高并发?(效率高) 虽然 Redis 是单线程处理命令,但它依然可以支持数十万 QPS ,这得益于以下几个关键技术: 1.

    84210编辑于 2025-06-10
  • 来自专栏陈琛的Redis文章

    Redis系列——3.使用Jedis连接Redis

    上一篇说了在Linux中如何下载和安装redis,一脸懵逼者请移步,在Linux上下载和安装Redis,但是我们通常用编程语言Java来连接他的,那今天我们来学习一下如何用Java来连接他。 那我们现在在本地用Jedis连接一下redis3.先用jedis测试一下 我们用jedis连接上远端的redis,可是发现根据连不上,具体报错如下图。 ? 这不尴尬了吗,这不是,我们来看一下这是为啥。 我们可以在redis的config文件中看见,里面有这么一行代码bind 127.0.0.1,这其实是redis的安全措施,比如我远端开了redis,任何人只要知道我的IP,都可以连上,并且进行数据操作 所以redis提供了固定的IP或固定的IP段连接,比如这边默认的就是只能127的IP段才能连接,其他网段都不可以。 ?

    1.1K10发布于 2020-06-12
领券