中文资料:
中文参考document: http://www.redisdoc.com/en/latest/
一、 mysql---->redis数据迁移
参照:http://blog.csdn.net/dba_waterbin/article/details/8996872
1.导入user简单数据
原理:是用mysql导出redis可以识别的命令 zadd user:1:following score targertId,逐行执行批量pipe导入
其中redis有自己的协议,可参照:http://redis.cn/topics/protocol.html 组合
中文参考document: http://www.redisdoc.com/en/latest/
一、 mysql---->redis数据迁移
参照:http://blog.csdn.net/dba_waterbin/article/details/8996872
1.导入user简单数据
原理:是用mysql导出redis可以识别的命令 zadd user:1:following score targertId,逐行执行批量pipe导入
其中redis有自己的协议,可参照:http://redis.cn/topics/protocol.html 组合
1) 编写数据库脚本mysql_to_redis.sql
SELECT CONCAT( "*4\r\n", '$', LENGTH(redis_cmd), '\r\n', redis_cmd, '\r\n', '$', LENGTH(redis_key), '\r\n', redis_key, '\r\n', '$', LENGTH(hkey), '\r\n', hkey, '\r\n', '$', LENGTH(hval), '\r\n', hval, '\r' ) FROM ( SELECT 'HSET' AS redis_cmd, 'users' AS redis_key, id AS hkey, score AS hval FROM shard_ddy_global.users ) AS t
2)将mysql_to_redis.sql放入到linux系统,在mysql_to_redis.sql的目录下执行命令:
mysql -uroot -pTV.xian shard_ddy_global --skip-column-names --raw < mysql_to_redis.sql | redis-cli --pipe
利用pipe批量命令将导出的数据导入到redis,150w,2列数据话费5秒左右,占用内存94M
3) hget users 1 查询对象users 中 key 为1的值
2. 导入关系数据
SELECT CONCAT( "*4\r\n", '$', LENGTH(redis_cmd), '\r\n', redis_cmd, '\r\n', '$', LENGTH(redis_key), '\r\n', redis_key, '\r\n', '$', LENGTH(score), '\r\n', score, '\r\n', '$', LENGTH(hval), '\r\n', hval, '\r' ) FROM ( SELECT 'zadd' AS redis_cmd, CONCAT('user:',source_id,':following') AS redis_key, id AS score, target_id AS hval FROM share_ddy_userRelation.user_relations WHERE relation IN (1,3) ) AS t
执行命令:
mysql -uroot -pTV.xian shard_ddy_global --skip-column-names --raw < mysql_to_redis.sql | redis-cli --pipe
一共700w数据导入时间1.37分钟, 关注关系1380w条数据,占用884M内存,导入时间2.41分钟
二、实践经验
1. info命令的意义:http://redis.readthedocs.org/en/latest/server/info.html
2. 主从配置 参考:http://blog.csdn.net/vboy1010/article/details/7741505
1)复制一份redis.conf,修改里边的启动端口及其aof备份文件名字,另外slaveOf写上主服务的地址 及其端口,启动的时候,nohup redis-server ...../redis6380.conf & 启动这个端口实例
2. 主从配置 参考:http://blog.csdn.net/vboy1010/article/details/7741505
1)复制一份redis.conf,修改里边的启动端口及其aof备份文件名字,另外slaveOf写上主服务的地址 及其端口,启动的时候,nohup redis-server ...../redis6380.conf & 启动这个端口实例
2)redis-cli -p 6380 链接个端口的redis服务
3.conf中databases为一个redis实例中包含的独立数据库,默认为16个,select 可以切换数据库
三、最佳实践:
1)新浪微博:1 单机多实例,2 客户端使用一致性hash将数据分片,3 关闭bgsave和aofrewrite,并重写aof使其可自动切割,4 zookeeper维护集群分片信息,5 通过控制路由策略做到在线扩容/减容。
2)Pinterest 使用 Redis 来保存七千万用户的关注图谱(follower graph): http://t.cn/zRvhc68 经验:1)主从配置,使用从服务器做主服务器的热备份 2)使用 ZooKeeper 来对主服务器做故障转移 3)AOF 每秒保存一次,RDB 每小时保存一次 4)单机多实例,保证 CPU 的使用率
3)“并发修改操作需要对并发进行保护,引入CAS等复杂问题” redis 本身不能保证key-value修改时的线程安全吗?
答案是,redis是单线程的,不涉及并发。所有的命令都可以认为是原子的。
4)根据业务需要选择合适的数据类型,并为不同的应用场景设置相应的紧凑存储参数。
5)当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能以及最大的内存使用量。
6)如果需要使用持久化,根据是否可以容忍重启丢失部分数据在快照方式与语句追加方式之间选择其一,不要使用虚拟内存以及diskstore方式。
7)不要让你的Redis所在机器物理内存使用超过实际内存总量的3/5。
相关推荐
**Redis与LabVIEW的整合:RedisinLabVIEW和LabVIEWRedis工具包** Redis是一个高性能的键值数据库,常用于数据缓存和消息队列。它支持丰富的数据类型,包括字符串、哈希表、列表、集合和有序集合。在LabVIEW...
Redis 是一个开源的内存数据结构存储系统,常被用作数据库、缓存和消息代理。在Windows环境下,Redis 的安装和使用与在Linux系统中有所不同。这里我们将详细讨论Windows版Redis 5.0.14的相关知识点。 1. **Redis ...
最近需要在C#中使用Redis,在Redis的官网找到了ServiceStack.Redis,最后在测试的时候发现这是个坑,4.0已上已经收费,后面只好找到3系列的最终版本,最后测试发现还是有BUG或者是我不会用。没有办法,最好找到了...
在Linux系统中安装Redis是一个常见的任务,特别是在搭建服务器或开发基于Redis的数据缓存应用时。Redis是一个开源的、高性能的键值对存储系统,适用于数据缓存、消息队列等多种场景。本文将详细介绍如何在Linux上...
Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多种场景。它以其高效、轻量级的特性,在IT行业中备受青睐,尤其是在互联网领域。在Windows环境...
Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值对存储系统,常被用作数据缓存、消息队列以及数据库等角色。它的设计目标是速度和数据持久化,支持多种数据结构,如字符串、哈希表、列表、集合、...
redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和程序redis部署6.2.6最新稳定版文档和...
Redis是一款高性能的键值对数据库,常用于缓存、消息队列等场景。在Windows操作系统上运行Redis,通常需要借助一些额外的工具。标题提到的"redis在win上的运行脚本redis.bat"就是一个帮助用户在Windows环境下启动...
Redis是世界上最受欢迎的开源内存数据结构存储系统,它可以用作数据库、缓存和消息代理。在Windows 64位环境下,Redis的安装和卸载过程是很多开发者和系统管理员需要了解的重要技能。以下是对这些知识点的详细说明:...
Redis Desktop Manager是一款强大的开源图形化界面工具,专为管理和操作Redis键值存储系统而设计。它为用户提供了直观且高效的界面,使得在处理Redis数据库时能够更加便捷。这个压缩包包含的就是这款工具的安装文件...
Redis是一款高性能的键值对内存数据库,被广泛应用于缓存、数据存储等领域。在这个Windows 64位版本的Redis 7.0.5中,我们能够看到一系列关键组件和配置文件,这使得它能够在Windows环境下运行。以下是关于Redis ...
Redis7.0.4.zip,解压缩到D盘根目录后,安装后启动为Windows服务 注意是windows 64位系统才可使用,不支持windows 32位系统使用 已经在Win10,Win11,Windows server 2012系统测试运行可用 使用步骤注意事项: ...
基于前后端分离的应用,无论是否使用Redis,都需要考虑如何进行数据的存储和缓存。下面我将分别介绍基于Redis和无Redis的两种版本的特点。 基于Redis的版本 特点 缓存处理:Redis作为内存数据库可以用来缓存频繁访问...
在Windows上安装Redis的过程涉及到多个步骤,包括启用必要的Windows功能、安装WSL2(Windows Subsystem for Linux 2)、设置默认WSL版本以及在Linux环境中安装Redis。以下是对这些步骤的详细说明: 1. **启用...
Redis 是一个高性能的键值数据库,它以键值对的形式存储数据,广泛应用于缓存、消息中间件、实时分析等领域。在 Windows 环境下,通常需要通过安装过程来设置 Redis 服务,但这里提供的资源是“redis 免安装”,意味...
Redis,全称Remote Dictionary Server,是一款高性能的键值存储数据库,常用于缓存、消息队列等场景。本文将深入探讨Redis的可视化工具及其免安装绿色版的使用,帮助你更好地管理和操作Redis服务器。 首先,了解...
Redis 使用教程详解 Redis 是一个高性能的 NoSQL 键值存储数据库,广泛应用于缓存、任务列表、网站访问统计数据、过期处理、应用排行榜、分布式集群架构中的 session 分离等领域。下面是 Redis 的详细使用教程。 ...
(1)支持Lua脚本:Redis 3.0支持Lua脚本,可以在Redis中执行脚本,大大提高了Redis的灵活性和可扩展性; (2)可插拔模块化:Redis 3.0提供了可插拔的模块化功能,可以根据用户的需求,自定义模块,实现不同的功能...
"Redis++使用说明,windows下编译Redis-Plus-Plus" 在这篇文章中,我们将详细介绍如何在Windows平台下编译Redis++,包括编译hiredis.lib和Win32_Interop.lib静态库文件的过程,然后安装Cmake并编译Redis++,最后...
Redis是一款高性能的键值存储系统,常用于数据库、缓存和消息代理等场景。它支持丰富的数据类型,如字符串、哈希、列表、集合和有序集合。在Windows平台上使用Redis,通常需要通过编译源码或者寻找预编译的二进制...