前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis学习

Redis学习

作者头像
DuncanZhou
发布2020-01-21 10:34:57
3980
发布2020-01-21 10:34:57
举报
文章被收录于专栏:Duncan's BlogDuncan's Blog

Redis

1、为什么使用Redis数据库

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

2.数据类型

  • string
  • hash:键值对的集合 hashset1 key1 val1 key2 val2```12```HGET hashset1 key1
  • list list1 val1```1234* set ```sadd set1 val1 set1```1234* zset(有序集合,带分数) ```zadd key score memeber

3.set和hset区别

  • set 就是普通的已key-value 方式存储数据,可以设置过期时间。时间复杂度为 O(1)
  • hset 则是以hash 散列表的形式存储。超时时间只能设置在 大 key 上,单个 filed 则不可以设置超时

使用场景对比:set 存储单个大文本非结构化数据,hset 则存储结构化数据,一个 hash 存储一条数据,一个 filed 则存储 一条数据中的一个属性,value 则是属性对应的值。

4.Scan操作,keys()操作,线上谨慎使用

scan操作取N条出来进行scan,并保持prefix

123456789101112131415

public HashSet<String> getKeysByScan(String pattern) { ScanParams scanParams = new ScanParams().count(1000).match(pattern); HashSet<String> allKeys = new HashSet<>(); cluster.getClusterNodes().values().forEach((pool) -> { String cur = ScanParams.SCAN_POINTER_START; do { try (Jedis jedis = pool.getResource()) { ScanResult<String> scanResult = jedis.scan(cur, scanParams); allKeys.addAll(scanResult.getResult()); cur = scanResult.getStringCursor(); } } while (!cur.equals(ScanParams.SCAN_POINTER_START)); }); return allKeys; }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis
  • 1、为什么使用Redis数据库
  • 2.数据类型
  • 3.set和hset区别
  • 4.Scan操作,keys()操作,线上谨慎使用
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档