博客
关于我
redis入门综合概要介绍
阅读量:653 次
发布时间:2019-03-15

本文共 2726 字,大约阅读时间需要 9 分钟。

redis入门综合概要介绍

   概要介绍:个人感觉redis是一个将数据保存在内存的存取工具,类似一个增强的Map,所以存取比较快。数据的存取基本上是set(key,value),get(key)这种key,value键值对存取。不仅如此,redis增加了列表、集合、哈希等数据结构支持。数据都在内存断电了数据就都会消失了,redis增加了两种将内存数据保存到磁盘的方法,一种是写操作日志,一种是将整个redis内存都写到硬盘上,如果断电或者重启,就可以用硬盘上的日志或内存镜像来恢复。

  • 应用场景
    • 1.取最新N个数据的操作
      • •使用LPUSH latest.comments<ID>命令,向list集合中插入数据
      • •插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID
      • •然后我们在客户端获取某一页评论时可以用下面的伪代码 redis.lrange("latest.comments",start,start+num_items-1)  
      • ps:如果输入无序则可以使用sorted set用时间作为score,然后lrangebyscore分页读取,按时间排序
    • 2.排行榜应用,取TOP n操作
      • 将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。
    • 3.需要精准设定过期时间的应用
      • 比如你可以把上面说到的sorted set的score值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了
    • 4.计数器应用
      • INCR,DECR命令
    • 5.Uniq操作,获取某段时间所有数据排重值
      • 使用Redis的set数据结构
    • 6.实时系统,反垃圾系统
      • set
    • 7.Pub/Sub构建实时消息系统
    • 8.构建队列系统
      • 使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。
    • 9.缓存
  • 支持类型
    • 字符串类型
    • l列表
      • 双端链表
    • z有序集合
      • 双端链表
      • 跳跃表
    • h哈希表(散列表)
      • 字典
    • s集合
      • 散列表
      • 字典
      • 整数集合
      •  
  • 详情查看我的另外一篇专门介绍 http://blog.csdn.net/shy_snow/article/details/78389716
  • 服务器
    • config get *
    • config set param value
    • CONFIG REWRITE
    • BGSAVE
      • fork子进程
      • 内存占用加倍
      • 读写性能耗时约4-10倍
    • SAVE
      • 阻塞
    • BGREWRITEAOF
      • 后台异步重写aof文件
      • fork
    • TIME
      • 获取数据库时间,返回值两个,第一个是UTC,第二个是微秒数
    • MONITOR
      • 实时打印出 Redis 服务器接收到的命令,调试用
    • SLAVEOF host port
      • 将当前服务器转变为指定服务器的从属服务器(slave server)
    • SLAVEOF no one
  • 安装
    • liunx
      • 解压
        • tar zxf redis.tar.gz
      • 进入解压后的目录
      • make clean
      • 安装make
        • 可能遇到的问题
          • gcc未安装
            • 把网络搞定了,然后   在终端里yum install gcc*就自动安装了
            • 下载离线安装文件进行安装
            • 如果在内网则可以将安装好的系统做成镜像,然后离线yum
          • 默认编译器不是gcc
            • 修改默认编译器为gcc
            • 查看默认编译器
              • echo $CC
          • zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory
            • 安装失败的残留文件
            • make distclean。清理一下,然后再make。
      • make install
      • 开机自启动
        • echo "redis-server /etc/redis/redis.conf" >>/etc/rc.local
    • 单主机多实例主从
      • 复制并修改配置文件
        • daemonize yes
          • 后台启动,守护进程
        • /var/run/redis_6379.pid
          • 定义自己的pid文件
        • port 6379
          • 定义端口号
      • 使用与代码实现
        • slaveof localhost 6379
      • 性能提升分析
    • 分布式集群
      • 分布式集群安装
        • 1.安装并启动多个实例
          • 修改配置文件
        • + -2.安装ruby、rubygems、redis ruby接口
          • 安装gem 需要ruby的版本在 1.8.7 以上

            低版本先升级zlib

            • yum install -y gcc zlib zlib-devel

            yum -y install ruby 

            rpm -ivh http://yum.puppetlabs.com/el/5/products/x86_64/puppetlabs-release-5-6.noarch.rpm yum install ruby ruby-devel rubygems rpm-build rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm vi /etc/yum.repos.d/epel.repo  修改 enabled=1  yum install rubygems  gem install -l ./redis-3.2.1.gem

            yum install rubygems

            gem install redis 

            • wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
            • gem install -l ./redis-3.2.1.gem
        • + -3.创建集群增加节点迁移数据槽
          • ./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

            增加节点

            • redis-trib.rb add-node 192.168.130.230:8000 127.0.0.1:7000
            • redis-trib.rb reshard 192.168.130.230:8000 之后会问询迁移槽的数量和来源,输入yes后开始迁移。
    • 高可用
      • sentinel.conf
      • zookeeper+主从机
  • 其他
    • 数据库设计
      • key设计前缀方便后期拆分
      • 根据场景选择合适的数据类型
    • java操作
      • jedis客户端
      • 分布式集群java调用
    • 服务器端lua脚本  
你可能感兴趣的文章
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询数据库所有表的字段信息
查看>>
【Java基础】什么是面向对象?
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>