目录
1 REDIS 1
1.1 REDIS简介 1
1.2 REDIS特点 1
2 REDIS安装 2
2.1 安装REDIS 2
2.2 配置REDIS 2
2.3 启动REDIS 3
2.4 访问REDIS 4
2.5 关闭REDIS 4
3 REDIS的REPLICATION 5
4 REDIS适用场景 6
1 Redis
1.1 Redis简介
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,Python,Ruby,Erlang,PHP客户端,使用很方便。
Redis的java客户端Jedis使用:
http://xmong.iteye.com/blog/1841444
1.2 Redis特性
1、数据类型
作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一:
●Lists (列表)
●Sets (集合)
●Sorted sets (有序集合)
●Hashes (哈希表)
键值的数据类型决定了该键值支持的操作。Redis支持诸如列表、集合或有序集合的交集、并集、查集等高级原子操作;同时,如果键值的类型是普通数字,Redis则提供自增等原子操作。
2、持久化
通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:使用截图的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。
3、主从同步
Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。
4、性能
相比需要依赖磁盘记录每个更新的数据库,基于内存的特性无疑给Redis带来了非常优秀的性能。读写操作之间有显著的性能差异。
5、提供多语言支持
Java,C/C++,C#,Php,Javascript,perl,Python,Objective-c等。
2 Redis安装
2.1 安装Redis
#使用wget命令将Redis安装包下载到当前目录下。当然可以通过其它工具(如浏览器)下载安装包。
$wget http://redis.googlecode.com/files/redis-2.6.12.tar.gz
#解压安装包
$tar xzf redis-2.6.12.tar.gz
#进入安装目录
$cd redis-2.6.12
#编译安装包
$make
(1) 使用make编译,此方式安装的Redis会在src目录下生成几个可执行文件,其中几个如:
redis-server:Redis服务器的daemon启动程序
redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
Redis-sentinel:Redis实例的监控管理、通知和实例失效备援服务,是Redis集群的管理工具,这是新加的一个工具功能。
(2) 使用make install,使用此方式会把可执行文件放在/usr/local/bin目录下。
(3) 使用make prefix=../install/redis,则可以将执行文件生成到指定的目录中。
2.2 配置Redis
在/home/xmong/redis/redis-2.6.12目录下有一个redis.conf文件,修改redis.conf文件,完成自己想要的配置。
下面是一些主要配置参数:
• daemonize:是否以后台daemon方式运行,默认为no
• pidfile:pid文件位置,默认/var/run/redis.pid
• port:监听的端口号,默认为6379
• timeout:请求超时时间,默认为0
• loglevel:log信息级别,默认为notice
• logfile:log文件位置,默认stdout
• databases:开启数据库的数量,默认为16
• save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
• rdbcompression:是否使用压缩,默认为yes
• dbfilename:数据快照文件名(只是文件名,不包括目录),默认为当前目录dump.rdb
• dir:数据快照的保存目录(这个是目录)
• appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。默认为no
• appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步),默认是everysec
• slaveof <masterip> <masterport> :主从配置,在redis-slave上配置master的ip port,即可。
2.3 启动Redis
#通过help查看启动命令使用
$src/redis-server --help
Usage: ./redis-server [/path/to/redis.conf] [options]
./redis-server - (read config from stdin)
./redis-server -v or --version
./redis-server -h or --help
./redis-server --test-memory <megabytes>
Examples:
./redis-server (run the server with default conf)
./redis-server /etc/redis/6379.conf
./redis-server --port 7777
./redis-server --port 7777 --slaveof 127.0.0.1 8888
./redis-server /etc/myredis.conf --loglevel verbose
Sentinel mode:
./redis-server /etc/sentinel.conf –sentinel
#指定配置文件启动redis
$ src/redis-server ./redis.conf
2.4 访问Redis
Redis服务启动后可以通过下面两种方法来访问redis服务。
(1)通过telnet
$telnet ip 6379
>set name xmong
+ok
>get name
xmong
>del name
:1
>exists name
:0
>quit
+ok
(2)通过redis-cli
$Redis-cli
>set name xmong
ok
>get name
“xmong”
>del name
(integer) 1
>quit
2.5 关闭Redis
$redis-cli shutdown
如果redis-server启动的时候修改了默认的端口号,则关闭是需要指定关闭的端口号。
$redis-cli –p 6380 shutdown
Redis服务关闭后,缓存数据会自动dump到硬盘上,文件路径为配置文件redis.conf中的配置项dbfilename所设定路径的dump.rdb文件。
3 Redis的Replication
在redis中实现Replication可以通过Master-Slave模式配置来实现,只需要一个命令或修改一个配置项就可以搞定。
Redis实现Master-Slave的一些特点:
(1)、同一台Master可以同步多个Slaves,同样Slave也可以及时其它slaves的连接同步请求,这样可以有效分载Master的同步压力。
(2)、Master-Slave是非阻塞方式的同步服务。所以在同步期间,客户端仍然可以提交请求。
(3)、Master-Slave可以实现读写分离,Master提供写服务,Slaves提供读服务,提供redis的服务性能。
Replication的工作原理: 在Slave启动并连接到Master之后,它将主动发送一个SYNC命令。此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。
如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。
Master-Slave实现如下:
(1)、通过命令
启动好Master Server和Slave Server后,在Slave Server上执行命令:
#打开Slave Server命令窗口
$redis-cli
#执行slaveof命令,指定Slave Server同步Master Server的IP和port端口号。
$slaveof MasterIp MasterPort
这种方式只能保证在执行slaveof命令之后,Master-Slave配置成功,一旦Slave Server重启之后,他们之间的Replication关系就失效了。
(2)、通过修改redis.conf配置文件
#修改Slave的redis.conf配置文件
$vim redis.conf
#指定masterip 和masterport的值
slaveof <masterip> <masterport>
#保存退出
$wq
通过指定配置文件先启动Master Server再启动Slave Server。
通过这种方式实现Master-Slave可以长期保证两个服务器之间的Replication关系。
测试:
#启动Master Server
$redis-server ./redis.conf
#启动Slave Server
$redis-server ./redis.conf
#启动Master Server的命令器
$redis-cli
#向Master Server保存信息
$set name master
OK
#启动Slave Server的命令器
$redis-cli
#向Slave Server中查取信息
$get name
“master”
通过上面的测试可以看做在Master Server中保存的值已经同步到Slave Server中。
4 Redis适用场景
毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。
1.取最新N个数据的操作
比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取
• 使用LPUSH latest.comments<ID>命令,向list集合中插入数据
• 插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID
• 然后我们在客户端获取某一页评论时可以用下面的逻辑(伪代码)
• FUNCTION get_latest_comments(start,num_items):
• id_list = redis.lrange("latest.comments",start,start+num_items-1)
• IF id_list.length < num_items
• id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
• END
• RETURN id_list
• END
如果你还有不同的筛选维度,比如某个分类的最新N条,那么你可以再建一个按此分类的List,只存ID的话,Redis是非常高效的
2.排行榜应用,取TOP N操作
这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,这时候就需要我们的sorted set出马了,将你要排序的值设置成sortedset的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。
3.需要精准设定过期时间的应用
比如你可以把上面说到的sorted set的score值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,定时清除过期数据了,不仅是清除Redis中的过期数据,你完全可以把Redis里这个过期时间当成是对数据库中数据的索引,用Redis来找出哪些数据需要过期删除,然后再精准地从数据库中删除相应的记录。
4.计数器应用
Redis的命令都是原子性的,你可以轻松地利用INCR,DECR命令来构建计数器系统。
5.Uniq操作,获取某段时间所有数据排重值
这个使用Redis的set数据结构最合适了,只需要不断地将数据往set中扔就行了,set意为集合,所以会自动排重
6.实时系统,反垃圾系统
通过上面说到的set功能,你可以知道一个终端用户是否进行了某个操作,可以找到其操作的集合并进行分析统计对比等。没有做不到,只有想不到。
7.Pub/Sub构建实时消息系统
Redis的Pub/Sub系统可以构建实时的消息系统,比如很多用Pub/Sub构建的实时聊天系统的例子。
8.构建队列系统
使用list可以构建队列系统,使用sorted set甚至可以构建有优先级的队列系统。
9.缓存
这个不必说了,性能优于Memcached,数据结构更多样化。
*******************
参考:
redis简介
redis配置
redis适用场景
分享到:
相关推荐
Redis 是一个开源的内存数据结构存储系统,常被用作数据库、缓存和消息代理。在Windows环境下,Redis 的安装和使用与在Linux系统中有所不同。这里我们将详细讨论Windows版Redis 5.0.14的相关知识点。 1. **Redis ...
最近需要在C#中使用Redis,在Redis的官网找到了ServiceStack.Redis,最后在测试的时候发现这是个坑,4.0已上已经收费,后面只好找到3系列的最终版本,最后测试发现还是有BUG或者是我不会用。没有办法,最好找到了...
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 ...
基于前后端分离的应用,无论是否使用Redis,都需要考虑如何进行数据的存储和缓存。下面我将分别介绍基于Redis和无Redis的两种版本的特点。 基于Redis的版本 特点 缓存处理:Redis作为内存数据库可以用来缓存频繁访问...
Redis7.0.4.zip,解压缩到D盘根目录后,安装后启动为Windows服务 注意是windows 64位系统才可使用,不支持windows 32位系统使用 已经在Win10,Win11,Windows server 2012系统测试运行可用 使用步骤注意事项: ...
在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 的详细使用教程。 ...
"Redis++使用说明,windows下编译Redis-Plus-Plus" 在这篇文章中,我们将详细介绍如何在Windows平台下编译Redis++,包括编译hiredis.lib和Win32_Interop.lib静态库文件的过程,然后安装Cmake并编译Redis++,最后...
(1)支持Lua脚本:Redis 3.0支持Lua脚本,可以在Redis中执行脚本,大大提高了Redis的灵活性和可扩展性; (2)可插拔模块化:Redis 3.0提供了可插拔的模块化功能,可以根据用户的需求,自定义模块,实现不同的功能...
Redis是一款高性能的键值存储系统,常用于数据库、缓存和消息代理等场景。它支持丰富的数据类型,如字符串、哈希、列表、集合和有序集合。在Windows平台上使用Redis,通常需要通过编译源码或者寻找预编译的二进制...
ASP.NET Core 使用 Redis 基于 StackExchange.Redis ASP.NET Core 是一个开源的、跨平台的框架,使用 C# 语言开发。Redis 是一个基于内存的数据存储系统,可以用来存储和处理大量数据。StackExchange.Redis 是一个...
**Redis 全面检查工具:redis-full-check** Redis 是一款高性能的键值存储系统,广泛应用于缓存、数据库和消息中间件等场景。在实际应用中,为了确保 Redis 的稳定性和数据一致性,需要定期对 Redis 实例进行健康...
Redis是一款高性能的键值数据库,常用于数据缓存、消息队列等场景。在Windows操作系统中,虽然Redis本身是跨平台的,但直接使用命令行工具进行操作可能会对初学者不太友好,这时就需要借助图形化的Redis连接工具。...
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更...