设为首页 收藏本站
查看: 755|回复: 0

[经验分享] java47: redis

[复制链接]

尚未签到

发表于 2018-11-2 11:06:26 | 显示全部楼层 |阅读模式
  NoSQL
  Not Only SQL
  特性:
  易扩展
  大数据量,高性能
  灵活的数据模型
  高可用
  Redis
  key-value 数据库
  5种类型:
  1字符串类型
  2散列类型
  3列表类型
  4集合类型
  5有序集合类型
  就是String list set sortset map
  官方数据:50个并发 执行10W 读 的速度11W次/s  写 8.1W次/s
  应用:
  缓存 (数据查询 短链接 新闻内容 商品内容)  *****
  聊天室的在线好友列表
  任务队列(秒杀 抢购 12306)
  应用排行榜
  网站访问统计
  数据过期处理(可以精确到毫秒)
  分布式集群架构中session分离
  配合json
  安装:下载地址:https://github.com/MSOpenTech/redis/releases。
  Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。
  打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf 。
  这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。
  切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
  这种实在本地运行,
  远程连接要将: conf 文件中:
  bind 127.0.0.1
  改成 远程地址
  设置键值对 set myKey abc
  取出键值对 get myKey
  会有自动提示
  java 使用 redis
  
  redis.clients
  jedis
  2.7.0
  
  jedis-2.7.0.jar
  commons-pool2-2.3.jar
  package com.stevezong.redis.demo;
  import redis.clients.jedis.Jedis;

  public>  @Test
  //获得单一的jedis对象操作数据库
  public void t9() {
  //1、获得连接对象
  Jedis jedis = new Jedis("172.29.12.158",6379);
  String username = jedis.get("username");
  System.out.println(username);
  jedis.set("addr","上海");
  System.out.println(jedis.get("addr"));
  jedis.close();
  }
  @Test
  //通过jedis的pool获得jedis连接对象
  public void t10() {
  //创建pool的配置对象
  JedisPoolConfig poolConfig = new JedisPoolConfig();
  //最大闲置个数
  poolConfig.setMaxIdle(30);
  //最小闲置个数
  poolConfig.setMinIdle(10);
  //最大连接数
  poolConfig.setMaxTotal(50);
  //创建一个pool
  JedisPool pool = new JedisPool(poolConfig,"172.29.12.158", 6379);
  Jedis jedis = pool.getResource();
  System.out.println(jedis.get("addr"));
  jedis.close();
  pool.close();
  }
  }
  常用的就是 String  hash
  key的定义:不要太长,不要超过1024个字节 消耗内存 降低查询效率
  key不要太短,降低key的可读性
  key有统一的命名规范
  String  是最基础的  他在redis 中是二进制安全的 也就是 存入和获取的一样, value 最大512M
  set
  set key value
  get
  get key
  返回 (nil) 表示无
  getset
  getset key value
  先获取该key的值 然后设定该key的值
  del
  del key
  返回(nil) 表示无
  删除
  incr
  incr key
  自增1
  如果没有这个key 就是0
  decr
  decr key
  自减1
  INCRBY
  INCRBY key 自增量
  decrby
  decrby key 自减量
  append
  append key value
  拼接字符串
  Hash 类型
  可以看成 具有String key 和String value的map容器
  非常适合存储值对象的信心
  如 Username password age  如果hash 中包含很少的字段 那么该类行的数据也将仅仅占用很少的磁盘空间 每一个hash可以存储 4293967295个键值对
  hset
  hset key field value
  hget
  hget key field
  hmset
  批量 赋值
  hmset key field1 value field2 value
  hgetall
  查hash 中的所有
  hgetall key
  hdel
  删除hash 的一条数据
  hdel key field
  hdel key field field1
  del
  删除整个hash
  del key
  hincrby
  自增
  hincrbu key field 自增量
  hexists
  判断指定的key中的filed 是否存在 存在1 不存在0
  hexists key field
  hlen
  hash的长度
  hlen key
  hkeys
  所有的key
  hkeys key
  hvals
  所有的value
  hvals key
  list 类型
  是按照出入顺序排序的字符串链表  可以在头 left 和 尾部 right 添加新的元素  如果该key 不存在 将创建一个新的链表  如果链表中所有的元素都被移除 这个key 也会被删除
  list 最大的元素数量是4292967295
  lpush
  存
  lpush key value value value .....
  rpush
  存
  rpush key value value value ...
  lrange
  取  0 是开始 -1最后 -2到第二
  lrange key start stop
  lpop
  取
  lpop key
  rpop
  取
  rpop key
  llen
  长度
  llen key
  lpushx
  存 当key 存在的时候 可以插入 不存在不能插入
  lpushx key value
  lrem
  删除   count 为0时 从头到尾 删除 value   count大于0 为3时 从头到尾 删除 3个value  value要背删除的数据
  lrem key count value
  lset
  存 在index位置插入一个value
  lset key index value
  linsert
  存 在 pivot 的前面或者后面 插入一个value
  linsert key BEFORE|AFTER pivot value
  rpoplpush
  取加存 从某个key list 的尾部取一个 放入 某个key2 list的头
  rpoplpush key key2
  set 类型
  set 中不能重复元素
  sortedset 类型
  key的通用操作
  keys
  查所有的key
  * 任意一个多个
  ?任意一个
  del
  删除
  del key1 key2 key3
  exists
  是否存在 有1 没有0
  exists key
  rename
  重命名
  rename oldKey newKey
  expire
  过期时间 秒
  empire key time
  ttl
  获取剩余过期时间 没有设置超时-1 已经超时-2
  ttl key
  type
  类型
  type key
  Redis 特性
  多数据库
  客户端默认使用0号
  1个redis 最大可有16个
  0-15
  使用select
  select 1
  select 2
  移动key 到 0-15的库中
  move key 0-15
  ping
  检测连接是否存活
  quit
  退出
  echo
  打印后面的内容
  dbsize
  返回当前数据库中的key的数目
  info
  获取服务器的信息和统计
  flushall
  删除所有库的所有key
  SAVE
  该命令将在 redis 安装目录中创建dump.rdb文件。
  Bgsave
  创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
  订阅与发布
  subscribe channel 订阅频道  subscribe mychar 订阅mychar这个频道
  publish channel content 发布频道 publish mychar xxx 发布mychar频道内容为xxx
  psubscribe channel*:批量订阅 psubscribe dd* 订阅dd开头的频道
  redis 事物
  multi 开启事物用于标记书屋的开始
  exec 提交事物
  discard 事物回滚
  redis 持久化
  两种 RDB AOF
  RDB 默认支持 无需配置
  指定的时间间隔将内存中的数据集快照写入磁盘
  简单: 数据多 适合使用 但是可能会丢数据.
  AOF
  以日志的形式记录服务器所处理的每一个写操作 在redis 服务器启动之初会读取该文件来重新构建数据库 以保证启动后数据库中的数据是完整的
  默认没有开启
  无持久化
  通过配置的方式禁用redis 服务器的持久化功能 redis 加强版的memcached
  可以同时使用RDB和AOF
  redis 配置文件
  save 900 1  900秒内修改1个key  拍快照
  save 300 10 300秒内修改10个 拍快照
  save 60 10000 60秒内修改1W个 拍快照
  但是尽管这样设置,Redis也不是严格 15 分钟保存一次的,可能 7 - 8 分钟就会触发保存
  dbfilename dump.rdb  配置rdb文件的名字
  dir ./  配置 rdb 文件的目录
  开启AOF
  appendonly no  改为 yes
  appendfilename "appendonly.aof" 文件名
  存的时机:
  # appendfsync always 总是 每次有数据修改发生都会写入aof文件
  appendfsync everysec 每秒
  # appendfsync no     从不
  数据恢复:
  1、flushall 清空数据库
  2、shutdown nosave 关闭redis 服务 防止dump.rdb
  3、编辑aof文件 将日志中的flushall命令删除并重启服务
  redis 客户端
  redis desktop manager


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629752-1-1.html 上篇帖子: redis和memcached对比 下篇帖子: Redis存储
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表