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

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

    ttl和pttl 这两个命令是查看redis的键剩余过期时间的。 4 迁移键 redis中,提供了3中迁移键的方法: move dump+restore migrate 下面分别介绍: 1、move move命令用户在多个数据库中进行键迁移。 第二:迁移过程是开启了2个客户端的连接,所以dump的结果不是在源redis和目标redis之间进行传输,需要有个中间过程。 redis和目标redis上完成的 第三、目标redis完成restore后发送ok给源redis,源redis接受后会根据migrate对应的选项来决定是否在源redis上删除对应的键。 migrate的参数如下: host:目标redis的IP地址 port:目标redis的端口 key|“” :redis3.0.6之前,migrate只支持迁移一个键,当需要迁移多个键,此处字符串为空

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

    Redis Set (4)

    存储(实现)原理 Redis用intset或hashtable存储set。如果元素都是整数类型,就用inset存储。如果不是整数类型,就用hashtable(数组+链表的存来储结构)。 redis.conf set-max-intset-entries 512 127.0.0.1:6379> sadd lset 1 2 3 3 4 5 6 7 (integer) 7 127.0.0.1

    32220发布于 2020-03-19
  • 来自专栏ops技术分享

    redis原理(4

    十条数据,算出各自的哈希值,(这里就不变了,实际上要经过一系列计算) 0 : 0 1 : 1 2 : 2 3 : 3 4 : 4 5 : 5 6 : 6 7 : 7 8 : 8 9 : 9 有三个节点, 算出各自的哈希值 node a: 3 node b: 5 node c: 7 这个时候比较两者的哈希值,5等于b,则归属b,4小于b,归属b,3等于a,则归属a,最后所有大于c的,归属于c(这里只是模拟 ) 相当于整个哈希值就是一个环,对应的映射结果: node a: 0,1,2,3 node b: 4,5 node c: 6,7,8,9 这个时候加入node d, 就可以算出node d的哈希值: node d: 9 这个时候对应的数据就会做迁移: node a: 0,1,2,3 node b: 4,5 node c: 6,7 node d: 8,9 只有最后8,9这2条数据被存储到新的节点,其他不变

    35300发布于 2021-05-18
  • 来自专栏大大刺猬

    redis(4) -- 集群

    /src/{redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-sentinel,redis-server} /usr/local 0 1608532872000 4 connected 60bee426b74f78863ebde556ccdf3be318076e2a 192.168.1.31:6380@16380 slave 61a3730c0bc4f8dd0adc6cb8361468b111ae107f 0 1608532290000 4 connected 61a3730c0bc4f8dd0adc6cb8361468b111ae107f 192.168.1.33:6379@16379 master 0 1608533632330 4 connected 61a3730c0bc4f8dd0adc6cb8361468b111ae107f 192.168.1.33:6379@16379 master failove 1887:M 21 Dec 2020 16:57:07.822 # Setting secondary replication ID to fb19496140888dd50683a812b6f4dc4c6475a003

    60210发布于 2020-12-21
  • 来自专栏Golang开发

    Redis(4)——list

    Redis中 可以对列表两端插入push 或者弹出pop,或者获取指定访问的元素列表,获取指定索引的下标的元素。 6379> linsert listkey after e n (integer) 8 127.0.0.1:6379> lrange listkey 0 -1 1) "e" 2) "n" 3) "d" 4) 会一直阻塞 127.0.0.1:6379> blpop emptylist 2 (nil) (2.08s) 127.0.0.1:6379> blpop emptylist 0 这个时候我们开启另外一个redis-cli ziplist 压缩列表:当列表类型元素个数小于list-max-ziplist-entries配置(默认512个),同时所有值都小于list-max-ziplist-value配置(默认64个字节)redis linkedlist链表当list类型无法满足ziplist的条件是,redis会使用linkedlist作为列表的内部实现。

    99850发布于 2019-05-29
  • 来自专栏技术杂记

    Redis 复制4

    命令master 上没有 rdb 文件[root@m1 ~]# lsanaconda-ks.cfg Downloads log Public redis.conf redis_slave_on_m1.conf VideosDesktop install.log Music redis-3.0.0 redis.log TemplatesDocuments install.log.syslog Pictures redis-3.0.0.tar.gz redis-new.conf tmp[root@m1 ~]# redis-cli 127.0.0.1:6379> keys * 1) "b"2) "a"3) "c"4) "8"5) "9"6) "d"127.0.0.1:6379

    26910编辑于 2022-07-09
  • 来自专栏架构师成长之路

    redis cluster(4)- redis集群原理

    https://www.jianshu.com/p/0232236688c1 1、集群架构 Redis集群设计 总体架构 在这个图中,每一个蓝色的圈都代表着一个redis的服务器节点。 2、集群通信---- 2.1 集群发现:MEET 最开始时,每个Redis实例自己是一个集群,我们通过cluster meet让各个结点互相“握手”。 3、数据分布及槽信息 3.1槽(slot)概念 Redis Cluster中有一个16384长度的槽的概念,他们的编号为0、1、2、3……16382、16383。 ,这是可以由用户指定的,也可以在初始化的时候自动生成(redis-trib.rb脚本)。 3.2数据分片 在Redis Cluster中,拥有16384个slot,这个数是固定的,存储在Redis Cluster中的所有的键都会被映射到这些slot中。

    76920编辑于 2022-04-14
  • 来自专栏∑小熊猫的博客

    Redis 系列(4) —— 列表

    stop 获取列表指定索引下的元素的命令格式为 lindex key index 获取表长度的命令格式为 llen key 【示例】 127.0.0.1:6379> lrange ltest 2 4 1) "test" 2) "j" 3) "a" 127.0.0.1:6379> lindex ltest 4 "a" 127.0.0.1:6379> llen ltest (integer) 7 3. 按照索引范围修剪列表 ltrim key start stop 4. 修改列表中元素 修改指定索引下标元素的命令格式为 lset key index element 5. Redis 会使用 linkedlist 作为列表的内部实现。 列表的使用场景 消息队列 Redis 可以使用利用阻塞命令来实现一个简单的消息队列的功能 Redis 的 lpush + brpop 命令即可实现阻塞队列,生产者客户端使用 lpush 从列表左侧插入元素

    38220编辑于 2021-12-06
  • 来自专栏小工匠聊架构

    Redis进阶-Redis 4种MQ 方案对比

    ---- Pre 最终方案-----> Redis进阶-Stream多播的可持久化的消息队列 我们知道redis 5.x版本,作者提供了stream这种基于radix tree 基数树的数据结构,解决使用 Redis实现MQ“百花齐放”的乱象。 这里我们来聊一聊使用Redis实现MQ的主要集中实现以及利弊 ---- 方案1 Pub/Sub Redis-13Redis发布订阅 优点 Pub/Sub的消息是 Fan Out 多播模式 ,每个订阅了Channel ---- 小结 Redis的Pub/Sub模型对于无法容忍数据丢失,消息可能积压的场景不太适合。 ---- 方案2 List Redis进阶-List底层数据结构精讲 优点 消息可以持久化。 ---- 方案4 stream 千呼万唤始出来, stream解决你的绝大部分苦恼 ~ Redis进阶-Stream多播的可持久化的消息队列

    1.6K10发布于 2021-08-17
  • 来自专栏技术杂记

    redis-benchmark 基础4

    /redis-benchmark -h localhost -p 6379 -n 100000 -c 20 ====== PING_INLINE ====== 100000 requests completed keep alive: 1 99.74% <= 1 milliseconds 99.88% <= 2 milliseconds 99.96% <= 3 milliseconds 99.98% <= 4 clients 3 bytes payload keep alive: 1 99.90% <= 1 milliseconds 99.97% <= 2 milliseconds 99.98% <= 4 keep alive: 1 98.35% <= 1 milliseconds 99.73% <= 2 milliseconds 99.89% <= 3 milliseconds 99.93% <= 4 keep alive: 1 93.16% <= 1 milliseconds 99.72% <= 2 milliseconds 99.90% <= 3 milliseconds 99.96% <= 4

    61340编辑于 2022-04-25
  • 来自专栏技术杂记

    Redis 容器与配置(4)

    这里对 docker run -it --link test-redis:redis --rm redis redis-cli -h redis -p 6379 进行一下解析 Option Comment docker run 调用 docker 命令的 run 子命令 -i 打开 STDIN ,进入交互模式 -t 分配一个伪终端,一般都和 -i 一起使用 --link test-redis:redis 连接 test-redis 容器,并且为这个容器定义一个别名,叫 redis (redis-cli -h redis -p 6379 中指定的 redis 就是用的这个别名) --rm 此容器用完就删掉 :redis --rm redis redis-cli -h redis -p 6379 redis:6379> get a (nil) redis:6379> set a b OK redis:6379 .conf [root@h104 x]# cat redis6379.conf daemonize no pidfile /data/redis6379.pid port 6379 tcp-backlog

    44350发布于 2021-10-20
  • 来自专栏数据库干货铺

    Redis4 Cluster部署

    Redis5版本前(redis3.x及redis4.x)cluster部署较麻烦,因部署过程中涉及的依赖软件版本要求较苛刻,因此记录一下redis4.0.14版本redis cluster的部署过程。 用户启动 useradd redis chown -R redis:redis /data/redis/ su - redis cd /data/redis/cluster/7001 cp /data S: 905dc9de7e074c282aab44b4ed5680a2020bcf4c 192.168.56.101:7005 replicates 43fa53cec1ae164f784e5d439aaf80ee2f7e35af :7003 slots: (0 slots) slave replicates cd6663924f0c31e6b60b815dca9cb7ea863f5573 M: abc1f43c9a4e8813e9da15433ac66cd185dc39fe 192.168.56.101:7001 slots:5461-10922 (5462 slots) master 1 additional replica(s) S: 905dc9de7e074c282aab44b4ed5680a2020bcf4c

    1.1K40编辑于 2022-03-07
  • 来自专栏业余草

    Redis开发规范

    4、使用批量操作提高效率 原生命令:例如mget、mset。 非原生命令:可以使用pipeline提高效率。 但要注意控制一次批量操作的元素个数(例如500以内,实际也和元素字节数有关)。 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 0".equals(cursor)); //删除bigkey jedis.del(bigSetKey); } 4、SortedSet删除: zscan + zrem public void

    1K30发布于 2020-06-15
  • 来自专栏大数据成长之路

    快速入门Redis系列(4)——Redis的持久化

    作为快速入门Redis系列的第四篇博客,本篇为大家带来的是Redis的持久化。 码字不易,先赞后看! ? ---- Redis 的持久化 由于redis是一个内存数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式 可以配置多条save指令,让Redis执行多级的快照保存策略。Redis默认开启RDB快照。 redis.conf文件中默认设置 ? RDB方案配置 修改 redis 的配置文件 cd /export/servers/redis-3.2.8/ vim redis.conf ? 然后我们再任意添加一个redis的值后,把当前redis的服务进程关掉 ps -ef | grep redis ?

    87230发布于 2021-01-27
  • 来自专栏学习之路

    Redis#4Redis 数据结构 -- String类型

    ,并优化存储为int编码 二进制数据 图片、视频、序列化对象 Redis 会以原始字节形式存储 4. 示例: setex key4 10 value4 ttl key4 # 返回剩余时间 2. 计数命令 由于string内部还可以存储数字,所以Redis还提供了数字操作的命令。 小结 下表是字符串类型命令的效果、时间复杂度,开发人员可以参考此表,结合自身业务需求和数据大小选择合适的命令。 执行命令:incr key; return count; } 注意:实际开发一个成熟、稳定的计数系统面临更多挑战,如 防作弊、按不同维度计数、避免单点问题、数据持久化到底层数据源等 根据实际的 而Redis就可以是这个公共的地方。(数据库、memecache等都可以各有优缺点)。 Redis 集中管理 Session 4.

    37810编辑于 2025-07-18
  • 来自专栏技术博文

    一、redis 初识-4.redis服务启动与关闭

    /redis-server & 4.2 通过指定配置文件启动 可以为redis服务启动指定配置文件,例如配置为/etc/redis/6379.conf,具体配置文件请查看redis配置章节。 ,使用redis-cli客户端连接时,也需要指定端口,例如: redis-cli -p 6380 4.3 设置redis开机自启动 启动脚本 redis_init_script 位于位于redis的 / #redis服务器监听的端口 REDISPORT=6379 #redis服务端可执行文件所在的位置 EXEC=/usr/local/bin/redis-server #redis客户端可执行文件所在的位置 CLIEXEC=/usr/local/bin/redis-cli #redis的PID文件所在的位置 PIDFILE=/var/run/redis_${REDISPORT}.pid #redis的配置文件所在位置 #启动 # service redis start #关闭 # service redis stop 4.4 redis关闭 1.先使用ps -aux | grep redis查看redis进程 [root

    1.7K10发布于 2021-06-22
  • 来自专栏用户8679488的专栏

    Redis 开发常用规范

    使用规范 1、冷热数据分离,不要将所有数据全部都放到Redis中 虽然Redis 支持持久化,但是Redis的数据存储全部都是在内存中,成本昂贵。 其好处如下: 1、能够根据某类key进行数据清理 2、能够根据某类key进行数据更新 3、能够方便了解某类key的归属方和应用场景 4、为统一化、平台化做准备,减少技术变更 一般,一个 key 需要带以下维度 4、控制key的生命周期,redis不是垃圾桶 如果将redis定位为缓存Cache使用,对于存放的key一定要设置超时时间! 4、严禁不设置范围的批量操作 redis 那么快,慢查询除了网络延迟,就属于这些批量操作函数。大多数线上问题都是由于这些函数引起。 1、[zset] 严禁对 zset 的不设范围操作 2、[hash] 严禁对大数据量 Key 使用 HGETALL 3、[key] Redis Cluster 集群的 mget 操作 4、[其他] 严禁使用

    40440发布于 2021-06-01
  • 来自专栏Linyb极客之路

    Redis开发常用规范

    1.冷热数据分离,不要将所有数据全部都放到Redis中 虽然Redis支持持久化,但是Redis的数据存储全部都是在内存中的,成本昂贵。 2.不同的业务数据要分开存储 不要将不相关的业务数据都放到一个Redis实例中,建议新业务申请新的单独实例。 因为Redis为单线程处理,独立存储会减少不同业务相互操作的影响,提高请求响应速度;同时也避免单个实例内存数据量膨胀过大,在出现异常情况时可以更快恢复服务! ":"-作为key分隔符,方便客户端工具作为目录分级 4.存储的Key一定要设置超时时间 如果应用将Redis定位为缓存Cache使用,对于存放的Key一定要设置超时时间! 禁止使用Keys正则匹配操作 Redis是单线程处理,在线上KEY数量较多时,操作效率极低【时间复杂度为O(N)】,该命令一旦执行会严重阻塞线上其它命令的正常请求,而且在高QPS情况下会直接造成Redis

    1.3K20发布于 2018-08-06
  • 来自专栏容器云生态

    Redis开发指南

    Redis介绍 Redis是内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 脚本(Lua scripting) LRU事件驱动(LRU eviction) 事物(transactions) 持久化(persistence) 哨兵(Sentinel) 自动分区(Cluster) Redis 命令相关 redis命令参考 开发常用命令介绍: key(键) # 查看当前key的数量 # (如果不知道key的规模的话不建议直接使用keys *,这样会遍历所有的key,可能造成阻塞) 127.0.0.1 4 5 12 23 (integer) 7 # 获取集合类型的全部值 127.0.0.1:6379> SMEMBERS numset 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" "4" 5) "5" 6) "12" 7) "23" 127.0.0.1:6379> SMEMBERS numset1 1) "2" 2) "4" 3) "12" 4) "32" 5) "45" 127.0.0.1

    94220编辑于 2021-12-28
  • 来自专栏用户7890857的专栏

    Redis 开发常用规范

    使用规范 1、冷热数据分离,不要将所有数据全部都放到Redis中 虽然Redis 支持持久化,但是Redis的数据存储全部都是在内存中,成本昂贵。 其好处如下: 1、能够根据某类key进行数据清理 2、能够根据某类key进行数据更新 3、能够方便了解某类key的归属方和应用场景 4、为统一化、平台化做准备,减少技术变更 一般,一个 key 需要带以下维度 4、控制key的生命周期,redis不是垃圾桶 如果将redis定位为缓存Cache使用,对于存放的key一定要设置超时时间! 4、严禁不设置范围的批量操作 redis 那么快,慢查询除了网络延迟,就属于这些批量操作函数。大多数线上问题都是由于这些函数引起。 1、[zset] 严禁对 zset 的不设范围操作 2、[hash] 严禁对大数据量 Key 使用 HGETALL 3、[key] Redis Cluster 集群的 mget 操作 4、[其他] 严禁使用

    56860发布于 2021-06-01
领券