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.缓存
- 1.取最新N个数据的操作
- 支持类型
- 字符串类型
- l列表
- 双端链表
- z有序集合
- 双端链表
- 跳跃表
- h哈希表(散列表)
- 字典
- s集合
- 散列表
- 字典
- 整数集合
- redis常用命令详情查看我的另外一篇专门介绍 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。
- gcc未安装
- 可能遇到的问题
- make install
- 开机自启动
- echo "redis-server /etc/redis/redis.conf" >>/etc/rc.local
- 解压
- 单主机多实例主从
- 复制并修改配置文件
- daemonize yes
- 后台启动,守护进程
- /var/run/redis_6379.pid
- 定义自己的pid文件
- port 6379
- 定义端口号
- daemonize yes
- 使用与代码实现
- 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后开始迁移。
-
- 1.安装并启动多个实例
- 分布式集群安装
- 高可用
- sentinel.conf
- zookeeper+主从机
- liunx
- 其他
- 数据库设计
- key设计前缀方便后期拆分
- 根据场景选择合适的数据类型
- java操作
- jedis客户端
- 分布式集群java调用
- 服务器端lua脚本
- 数据库设计