毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱.希望你喜欢这个比喻. 下面是一篇新鲜出炉的文章,其作者是Redis作者@antirez,他描述了Redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览: 1.取最新N个数据的操作 比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放…
回到目录 Redis这个Nosql的存储系统一般会被部署到linux系统中,我们可以把它当成是一个数据服务器,对于并发理大时,我们会使用多台服务器充当Redis服务器,这时,各个Redis之间也是分布式的,而Redis与WWW之间也是一种分布式,对于各个redis之间的分布式不需要我们去干预,它是由我们的redis客户端去负责链接的,你当时链到哪台服务器,完全由客户端去控制,redis这种模式我们通常称为“主从模式”,即一个主服务器,主要负责写入数据,多台从服务器,负责数据的读取,而它们之前的数…
Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 随便哪个盘,解压后,将文件夹重新命名为 redis. 打开一个 cmd 窗口 使用cd命令切换目录到 D:\redis 运行 redis-server.exe redis.windows.conf . 如果想方便的话,可以把 redis 的路…
Redis 一.使用PHP操作Redis存储系统中的各类数据类型方法 1.String(字符串)操作 <?php // 1. 实例化 $redis = new Redis; // 2. 连接 redis $redis->connect('localhost',6379); // 3. 选择数据库 $redis->select(15); // 字符串类型 // 添加数据 $redis->set('name','张三'); // 设置添加数据的生命周期 $redis->set('…
# Redis configuration file example # Note on units: when memory size is needed, it is possible to specify //1  配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit   // 2  对大小写不敏感 # it in the usual form of 1k 5GB 4M and so forth: # # 1k => 1000 bytes # 1kb => 1024…
Redis内部数据结构 Redis和其他key-value数据库的很大区别是它支持非字符串类型的value值.它支持的value值的类型如下: sds (simple dynamic string) 简单动态字符串 双端链表 字典(dictionary/map/associative array) 跳跃表(skiplist) 下面将对以上的各个类型在redis内部的实现进行分析. 一.sds (simple dynamic string) 简单动态字符串 Redis并没有使用C的字符串,而是在其…
最近刚刚接触了redis技术,对此有一些了解,这是简单做一点总结. Redis简介 首先,简单了解一下NoSQL(Not only sql),不要错误的理解为:没有SQL,而是不仅仅是SQL.NoSQL工具也是一种简易的数据库,它主要是基于内存的数据库,并提供一定的持久化功能.现在有很多这种技术如:memcachedb,redis,MongoDB等等. Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis的性能十分优越,可以支持每秒十几万的读/写操作…
Redis过期键的删除策略 对于过期键一般有三种删除策略 定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作: 惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键:如果没有过期,那就返回该键: 定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键.至于删除多少过期键,以及要检查多少个数据库,则由算法决定. 下面我们来看看三种策略的优缺比较: 定时删除策略对内存是…
之前介绍过如何在ubuntu安装Redis服务器:https://www.cnblogs.com/zifeiy/p/9062738.html 接下来,我们在Redis上进行一些基本的操作. 所县使用命令:redis-cli登陆Redis命令行. 然后执行下面的指令进行测试与学习: 字符串类型的增删改查 ### 增加一个值key为name,value为zifeiy 127.0.0.1:6379> set name 'zifeiy' OK ### 查询name的值 127.0.0.1:6379>…
Redis是新兴的一种内存数据库技术,在数据高速读写方面有着明显的优势.前几天,Redis3.0正式版本发布,为我们带来了Redis集群功能.这一功能很早就投入了开发,直到现在才真正走进我们的视野.可以说,从3.0这个版本开始,我们应当重新认识它,学习它.这里我会分两次,分别介绍Redis的安装配置和Redis集群的搭建. Redis的安装   显然,我们需要首先从redis.io上下载官方的软件包,这里使用的是redis-3.0.0.tar.gz.下载到本地以后需要使用make命令进行编译.…
什么是NoSQL 概述 NoSQL:Not Only SQL,意思不仅仅是SQL,它是属于非关系型数据库.那什么是关系型数据库?数据结构是一种有行有列的数据库. NoSQL数据库是为了解决高并发.高可用.高可扩展.大数据存储问题而产生的数据库解决方案. NoSQL可以作为关系型数据库的良好补充,但是不能替代关系型数据库. Redis就属于非关系型数据库,而传统的MySQL.Oracle.DB2.SQL Server等都是关系型数据库. 分类 键值存储数据库(Redis.Memcached) 列存…
回到目录 Redis本身支持事务,这就是SQL数据库有Transaction一样,而Redis的驱动也支持事务,这在ServiceStack.Redis就有所体现,它也是目前最受业界认可的Redis驱动,而它将Redis的事务机制(MULTI,Exec,Watch等)封装成了比较友好的实现方式,如下面的代码 using (IRedisClient RClient = prcm.GetClient()) { using (IRedisTransaction IRT = RClient.Creat…
回到目录 redis客户端驱动有很多,如ServiceStack.Redis,StackExchange.Redis等等,下面我使用ServiceStack.Redis为例,介绍一下在redis驱动中实现并发锁的方式,并发就是多线程同时访问和操作同一个资源,而对于redis来说,如果你多个线程共同修改一个key的value,这时就会出现并发,为了保证数据完整性,这时需要使用并发锁,在各大语言中,都有自己的实现方法,无论的C,C#,java还是sqlserver都有这个概念! using (IRe…
redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目标. redis-cluster中不存在中心节点或者代理节点,这样的设计目标是为了实现线性化扩展,也解决了单一中心(或代理)节点带来的性能瓶颈,但是随着集群规模的增大,节点之间通信的开销也会成指数级的增长,这样的机制也反过来限制了redis-cluster的规模无限扩充的可能. redis-clus…
1.写操作的流程 2.RDB快照-redis的第一个持久化策略 第一种是以快照的形式持久化到本地磁盘(RDB文件). 持久化策略是: 1.配置(save N M)在N秒内,redis至少发生M次修改,则redis持久化快照到本地磁盘. after 900 sec (15 min) if at least 1 key changed 2.手动持久化:手动save或bgsave快照. 工作原理:当redis进行持久化时,redis会fork出一个子进程,然后在子进程中循环所有的数据,将数据写入一个临…
1.RedisCache.java package com.houtai.cache; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import org.apache.ibatis.cache.Cache; import org.apache.ibatis.logging.Log; import org.apache.ibati…
本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存session,又或者只存放日行情股票数据)那么就会出现一下几个问题了 Redis会自己回收清理不用的数据吗? 如果能,那如何配置? 如果不能,如何防止数据累加后大量占用存储空间的问题? 之前一直接触Redis不是很深入,最近项目当中遇到一个需求场景,需要清空一些存放在Redis的数据,主要是通过一些时间进行…
本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存session,又或者只存放日行情股票数据)那么就会出现一下几个问题了 Redis会自己回收清理不用的数据吗? 如果能,那如何配置? 如果不能,如何防止数据累加后大量占用存储空间的问题? 之前一直接触Redis不是很深入,最近项目当中遇到一个需求场景,需要清空一些存放在Redis的数据,主要是通过一些时间进行…
########################################## 常规 ########################################## daemonize no# Redis默认是不作为守护进程来运行的.你可以把这个设置为"yes"让它作为守护进程来运行. # 注意,当作为守护进程的时候,Redis会把进程ID写到 /var/run/redis.pid pidfile /var/run/redis.pid# 当以守护进程方式运行的时候,Redi…
redis-sentinel.conf配置项说明如下: 1.port 26379 sentinel监听端口,默认是26379,可以修改. 2.sentinel monitor <master-name> <ip> <redis-port> <quorum> 告诉sentinel去监听地址为ip:port的一个master,这里的master-name可以自定义,quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算…
Java连接redis 一,导入jar包 Redis有什么命令,Jedis就有什么方法 设置防火墙 在Linux上面运行如下代码: 单实例:Jedis实例: package com.jedis.demo; import org.junit.Test; import redis.clients.jedis.Jedis; public class Demo1 { /* * 单实例连接redis数据库 * */ @Test public void run() { //参数:ip地址,端口号 Jedis…
  1,快照持久化 1简介      redis可以通过创建快照来获得某个时间点上的内存内容的数据副本,有了副本之后,就可以将副本发送到其他redis服务器上从而创建相同数据的从服务器,同时快照留在原地以便重启redis的时候实现数据恢复. 2配置      save 60 1000  快照生成策略  如果服务器距离上一次成功生成快照已经超过六十秒,并且期间执行了至少1000次写操作.      stop-writes-on-bgsave-error yes 创建快照文件失败后是否继续执行写命令…
1.Redis客户端 1.1 Redis自带的客户端 (1)启动 启动客户端命令:[root@kwredis bin]# ./redis-cli -h 127.0.0.1 -p 6379 -h:指定访问的redis服务器的ip地址 -p:指定访问的redis服务器的port端口 还可以写成:[root@itheima bin]# ./redis-cli 使用默认配置:默认的ip[127.0.0.1],默认的port[6379] (2)关闭 Ctrl+c或者127.0.0.1:6379> quit…
参考博客: https://blog.csdn.net/flyer_tang/article/details/80320974 https://blog.csdn.net/weixin_30773135/article/details/97923338 https://www.cnblogs.com/SysoCjs/p/10394659.html 官网下载地址:   http://redis.io/download (linux版) github下载地址:https://github.com/M…
本文内容: 1.Redis服务器保存数据库的方法 2.客户端切换数据库的方法 3.数据库保存键值对的方法 4.数据库的添加,删除,查看,更新操作的实现方法 5.服务器保存键的过期时间的方法 6.服务器自动删除过期键的方法 7.服务器的复制模式 8.数据库通知功能的实现方法 1.服务器中的数据库 1.在redis.h文件中,有一个redisServer的结构体,该结构体中存在一个db数组,数组中存放的是一个个的数据库,为redisDb结构 2.Redis服务器默认会创建16个数据库 2.切换数据库…
Redis事务:可以一次执行多个命令,本质是一组命令的集合.一个事务中的,所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞. 常用命令:MULTI  开启事务  EXEC 提交事务. DISCARD  放弃事务  WATCH  监控事务  UNWATCH   取消监控事务 case1:正常执行                                                   case2:放弃事务 case3:全体连坐                     …
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hashs(哈希类型).这些数据类型都 支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排 序.与memcached一样,为了保证效率,数据都是缓存在内存中.…
Redis可以存储可以存储键与5种不同数据结构类型之间的映射. 五种结构类型为:STRING(字符串).LIST(列表).SET(集合).HASH(散列).ZSET(有序集合). 1.字符串类型String String 数据结构是简单的 key-value 类型,使用string时,redis(大多数情况下)并不会理解或者解析其含义,无论使用json.xml还是 纯文本在redis看来都是一样的,只是一个字符串,只能进行strlen.append等对字符串通用的操作,无法针对其内容进一步操作.…
首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务器配置如下:     1.先找到配置redis.windows-service.config文件修改port 6379 为port 6380     2.然后配置master服务器地址:slaveof 127.0.0.1 6379,然后主服务有密码还需要配置密码 masterauth CeshiPa…
我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息.     我们就从上到下来理解一下这些配置信息中的某些配置:     1.dbfilename是本地持久化存储数据库文件名,默认为dump.rdb.我可以在安装目录文件夹下找到这个文件.     2.requirepass是密码,即连接服务器的密码,默认为空.下面我来设置一个密码然后用带密码的命令连接一遍.…