1. redis比mysql读写快多少倍
MySQL的query cache也是在内存上的,所以读操作肯定也很快。
而Redis/Memcached则无论读写,都在内存中进行,用作数据库缓存还是不错的,可以减轻MySQL负担。
2. redis读写瓶颈
从你这个描述来看,写性能确实不太正常。
我有一种方法可以用来看一下你这50000条数据是不是超过了默认的maxmemory值:
统计一下10000条数据大约占的内存值,估计5W条记录的大约内存值,然后再看一下你的VM是否开启。这样做是因为超过了指定的内存同时没开启vm时,有可能会导致进程挂掉。
你既然使用了默认配置,你还可以看一下日志里是不是会有崩溃记录。也可以根据记录找一下其他的原因。
你用的是hash结构的话,可以调整一下hash-zipmap-max-entries这个参数。一般这个参数在1000的时候性能是比较高的。超过1000以后CPU就上来了。默认是512.
3. redis一条数据最大战用多少空间
你好,很高兴为你解答
REDIS
abbr.
Redistricting System 重划学区系统
希望我的回答对你有帮助,满意请采纳。
4. 如何高效地向Redis写入大量的数据
具体实现步骤如下:
1. 新建一个文本文件,包含redis命令
SET Key0 Value0
SET Key1 Value1
...
SET KeyN ValueN
如果有了原始数据,其实构造这个文件并不难,譬如shell,python都可以
2. 将这些命令转化成Redis Protocol。
因为Redis管道功能支持的是Redis Protocol,而不是直接的Redis命令。
如何转化,可参考后面的脚本。
3. 利用管道插入
cat data.txt | redis-cli --pipe
Shell VS Redis pipe
下面通过测试来具体看看Shell批量导入和Redis pipe之间的效率。
测试思路:分别通过shell脚本和Redis pipe向数据库中插入10万相同数据,查看各自所花费的时间。
Shell
脚本如下:
#!/bin/bash
for ((i=0;i<100000;i++))
do
echo -en "helloworld" | redis-cli -x set name$i >>redis.log
done
每次插入的值都是helloworld,但键不同,name0,name1...name99999。
Redis pipe
Redis pipe会稍微麻烦一点
1> 首先构造redis命令的文本文件
在这里,我选用了python
#!/usr/bin/python
for i in range(100000):
print 'set name'+str(i),'helloworld'
# python 1.py > redis_commands.txt
# head -2 redis_commands.txt
set name0 helloworld
set name1 helloworld
2> 将这些命令转化成Redis Protocol
在这里,我利用了github上一个shell脚本,
#!/bin/bash
while read CMD; do
# each command begins with *{number arguments in command}\r\n
XS=($CMD); printf "*${#XS[@]}\r\n"
# for each argument, we append ${length}\r\n{argument}\r\n
for X in $CMD; do printf "\$${#X}\r\n$X\r\n"; done
done < redis_commands.txt
# sh 20.sh > redis_data.txt
# head -7 redis_data.txt
*3
$3
set
$5
name0
$10
helloworld
至此,数据构造完毕。
测试结果
5. redis jredis千万数据导入到redis需要多久
需要看你用什么样的方式导入,需要看你导入的数据是什么数据,每次的数据量大不大,需要看你跟redis之前是不是在局域网,需要看你是不是使用redis集群,千万级别其实并不算大,因为redis并不需要操作数据库,我很好奇你导入千万数据就不怕机器当机吗?
最多不超过一个小时。
6. redis 一次请求耗时多少 mysql
1,redis是一种内存性的数据存储服务,所以它的速度要比mysql快。 2,redis只支持String,hashmap,set,sortedset等基本数据类型,但是不支持联合查询,所以它适合做缓存。 3,有时候缓存的数据量非常大,如果这个时候服务宕机了
7. 使用python同步mysql到redis由于数据较多,一条一条读出来写到redis太慢,有没有可以批量操作的。
MYSQL快速同步数据到Redis
举例场景:存储游戏玩家的任务数据,游戏服务器启动时将mysql中玩家的数据同步到redis中。
从MySQL中将数据导入到Redis的Hash结构中。当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中。这样没什么错,但是速度会非常慢。如果能够想法使得MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可以节省很多消耗和缩短时间。
Mysql数据库名称为:GAME_DB, 表结构举例:
CREATE TABLE TABLE_MISSION (
playerId int(11) unsigned NOT NULL,
missionList varchar(255) NOT NULL,
PRIMARY KEY (playerId)
);
Redis中的数据结构使用哈希表:
键KEY为mission, 哈希域为mysql中对应的playerId, 哈希值为mysql中对应的missionList。 数据如下:
[root@iZ23zcsdouzZ ~]# redis-cli
127.0.0.1:6379> hget missions 36598
"{\"10001\":{\"status\":1,\"progress\":0},\"10002\":{\"status\":1,\"progress\":0},\"10003\":{\"status\":1,\"progress\":0},\"10004\":{\"status\":1,\"progress\":0}}"
快速同步方法:
新建一个后缀.sql文件:mysql2redis_mission.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,
'missions' AS redis_key,
playerId AS hkey,
missionList AS hval
FROM TABLE_MISSION
) AS t
创建shell脚本mysql2redis_mission.sh
内容:
mysql GAME_DB --skip-column-names --raw < mission.sql | redis-cli --pipe
Linux系统终端执行该shell脚本或者直接运行该系统命令,即可将mysql数据库GAME_DB的表TABLE_MISSION数据同步到redis中键missions中去。mysql2redis_mission.sql文件就是将mysql数据的输出数据格式和redis的输入数据格式协议相匹配,从而大大缩短了同步时间。
经过测试,同样一份数据通过单条取出修改数据格式同步写入到redis消耗的时间为5min, 使用上面的sql文件和shell命令,同步完数据仅耗时3s左右。
8. 为什么从redis中取数据比较慢
redis并不会因为key的增加而导致写入明显变慢,肯定是其他因素。
如果redis开启了持久化,在进行持久化时,性能必然下降,可以使用config命令查看持久化设置了没有。另外考虑是否是内存不足,一般redis最多只应该占用60%的物理内存,如果超过了在rdb进行持久化时可能会内存不足。可以监视内存和cpu使用情况进行分析。
9. redis集群重启载入1t数据需要多长时间
选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。
在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点
右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。
10. 求助各位,关于redis耗时比较严重的问题
(1)redis部署的机器性能,IO.CPU,带宽等等都是没有问题的
(2)我们访问redis的服务器的IO,CPU,负载也是没问题的
(3)访问redis使用的是mget操作,一次最多获取50个key,查看redis的慢操作日志,由于mget导致的查询慢操作情况很少
(4)是否是由于访问redis的服务访问其他数据资源耗时严重的问题,因为服务还访问了其他的redis资源,其他redis的耗时还算比较正常,因此可以排除这个问题