redis
gentelyang
呵呵
展开
-
redis之数据结构
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)1:StringString是最简单的类型,可以理解成与Memcached是一模一样的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。string类型是二进制安全的。意思是redis的string可以包...原创 2018-05-01 19:04:08 · 140 阅读 · 0 评论 -
分布式缓存Redis之与Memcached的比较
Redis的缓存部分值得写一篇新文章,Redis能够替代memcached,让你的缓存从只能存储数据变得能够更新数据,因此你不再需要每次都重新生成数据了。不适用 另外在一些需要大容量数据集的应用,Redis也并不适合,因为它的数据集不会超过系统可用的内存。所以如果你有大数据应用,而且主要是读取访问模式,那么Redis并不是正确的选择。一:性能 由于Redis只使用单核,而Memcached可以...原创 2018-05-03 09:50:41 · 739 阅读 · 0 评论 -
分布式缓存Redis之内存优化与性能优化
Redis作为内存数据库,所有数据都从内存中拿,省去读写磁盘的消耗(持久化是由fork子进程处理,主服务器不受影响)响应速度极快,但是我们不可能将所有的数据都读到内存中,所以内存资源显得非常可贵,我们就要优化存储结构。一、尽量使用hash COC中每个客户会对应上千个标签,每个客户就是一个对象,我们如何存储它?序列化对象:要求在redis存储前对象进行序列化操作,每次取出后还要执行反序列化操作,开...原创 2018-05-03 09:34:12 · 535 阅读 · 0 评论 -
分布式缓存之cluster
jedis客户端操作redis主要三种模式:单台模式、分片模式(ShardedJedis)、集群模式(BinaryJedisCluster),分片模式是一种轻量级集群。现在项目上用redis的话,很少说不用集群的情况,毕竟如果生产上只有一台redis会有极大的风险,比如机器挂掉,或者内存爆掉,都会导致数据丢失。从Redis3.0,Jedis2.9版本开始有了cluster的概念。二:如何搭建集群以...原创 2018-05-02 21:15:41 · 254 阅读 · 0 评论 -
分布式缓存Redis之ShardedJedis
原来项目中有用到Redis用作缓存服务,刚开始时只用一台Redis就能够满足服务,随着项目的慢慢进行,发现一台满足不了现有的项目需求,因为Redis操作都是原子性的,造成有时同时读写缓存导致查询效率的下降。但是由于我们现在用的还是Redis2.X版本,还是没有集群功能的(Redis作者在3.0版本中已经加入了集群功能),因此只能使用2.x版本中自带的一个叫做ShardedJedis的来实现分布式缓...原创 2018-05-02 09:28:53 · 464 阅读 · 0 评论 -
分布式缓存redis之java客户端
目前Redis的Java客户端主要有两种:Jedis、Redission,个人感觉Jedis用的广泛一些;Jedis与Redisson对比Jedis是Redis的java实现的客户端,其API提供了比较全面的Redis命令的支持,Reddisson实现了分布式和可扩展的java数据结构和Jedis相比,功能较为简单,不支持字符串操作,不支持排序,事务,管道,分区等redis特性,但是在集群模式下,...原创 2018-05-02 09:20:17 · 317 阅读 · 0 评论 -
分布式缓存Redis之发布/订阅(pub/sub)
SUBSCRIBE、UNSUBSCRIBE和PUBLISH 三个命令实现了发布与订阅信息泛型(Publish/Subscribe messaging paradigm),在这个实现中, 发送者(发送信息的客户端)不是将信息直接发送给特定的接收者(接收信息的客户端), 而是将信息发送给频道(channel), 然后由频道将信息转发给所有对这个频道感兴趣的订阅者。 而是将信息发送给频道(channel...原创 2018-05-02 08:35:46 · 1579 阅读 · 0 评论 -
分布式缓存Redis之Pipeline(管道)
Redis的pipeline功能在命令行中没有,但redis是支持pipeline的,而且在各个语言版的client中都有相应的实现。 由于网络开销延迟,就算redis server端有很强的处理能力,也会由于收到的client消息少,而造成吞吐量小。当client 使用pipelining 发送命令时,redis server必须将部分请求放到队列中(使用内存),执行完毕后一次性发送结果;如果发...原创 2018-05-01 21:52:33 · 524 阅读 · 0 评论 -
分布式缓存redis之事务
关系型数据库的事务具备:原子性(A)、一致性(C)、隔离性(I)、持久性(D)。在redis中也同样拥有事务的概念redis事务的使用redis中与事务相关的命令有5个,分别是:MULTI EXEC DISCARD WATCH UNWATCH1)MULTI命令用于开启事务开启事务后,可以开始对键执行操作,能看到开启事务后命令的返回都是”QUEUED”,Redis Server收到这些命令后将他们保...原创 2018-05-01 20:51:31 · 453 阅读 · 0 评论 -
分布式缓存redis之持久化
redis可以持久化,当做cache时持久化的意义何在?持久化的意思就是说服务器重启之后,缓存依然存在,内存类型的缓存,服务器重启后就不存在了。比如使用持久化的方案做登录Session,服务器重启后用户不用再次登录,而一般内存方案需要再次登录。Redis是一个支持持久化的内存数据库,且数据都是放在内存中的,也就是说Redis需要经常将内存中的数据同步到磁盘来保证持久化(防止数据丢失)。持久化是使用...原创 2018-05-01 19:42:15 · 568 阅读 · 0 评论 -
分布式缓存Redis之配置文件redis.config
使用配置文件启动服务器:src/redis-server redis.conf主要配置项:Redis支持很多的参数,但都有默认值General1:daemonize 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes。2:pidfile ;当Redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。当运行...原创 2018-05-01 19:20:33 · 2466 阅读 · 0 评论 -
redis之用作消息队列
背景需要开发app抢购的api,需要处理大量的请求,需要有高响应率,例如淘宝和京东的秒杀,会在一个时间点有大量的请求。设计思路首先用nginx做负载均衡,根据ip_hash分配请求到不同服务器上,默认前三台服务器能处理请求,其余自动抛弃请求。每台服务器上都设置有消息队列。api的作用就是接收请求,请求放到消息队列里,返回给客户端一个等待处理结果的消息。然后服务器后台一直跑一...原创 2018-08-20 21:43:07 · 333 阅读 · 0 评论