`
xmong
  • 浏览: 259048 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多
目录
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适用场景


分享到:
评论

相关推荐

    Windows 上安装 Redis安装,redis7.2安装到windows上面

    Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows ...

    Redis 7.0.4 x64位 windows 系统 安装包 Redis7.0.4.zip

    Redis7.0.4.zip,解压缩到D盘根目录后,安装后启动为Windows服务 注意是windows 64位系统才可使用,不支持windows 32位系统使用 已经在Win10,Win11,Windows server 2012系统测试运行可用 使用步骤注意事项: ...

    若依前后端分离版去redis版/无redis版本

    基于前后端分离的应用,无论是否使用Redis,都需要考虑如何进行数据的存储和缓存。下面我将分别介绍基于Redis和无Redis的两种版本的特点。 基于Redis的版本 特点 缓存处理:Redis作为内存数据库可以用来缓存频繁访问...

    redis-windows-7.0.11

    Redis是一种开源的内存数据结构存储系统,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。Redis可以用作数据库、缓存和消息中间件。Redis在性能、可扩展性和灵活性方面表现出色,因此被广泛应用于Web...

    redis-5.0.4.tar.gz下载及redis安装过程

    redis安装 1: 下载redis-5.0.4.tar.gz 2: 解压源码并进入目录 tar zxvf redis-5.0.4.tar.gz cd redis-5.0.4 3: 不用configure 4: 直接make (如果是32位机器 make 32bit) 查看linux机器是32位还是64位的方法:...

    redis-5.0.5.tar.gz

    redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-...

    windows环境下配置redis6集群

    注意:由于本人配置redis.conf中的路径使用的是绝对路径,当前redis安装目录的父目录为D:\InstallDir,可以在每个配置文件中修改为自己指定的路径位置 redis638-.conf配置文件内容 #redis服务器端口号 port 6380 #...

    Redis集群下过期key监听的实现代码

    在使用redis集群时,发现过期key始终监听不到。网上也没有现成的解决方案。于是想,既然不能监听集群,那我可以建立多个redis连接,分别对每个redis的key过期进行监听。以上做法可能不尽人意,目前也没找到好的解决...

    Redis-5.0.0集群配置

    本文档基于以前写的《Redis-3.0.5集群配置》和《Redis-4.0.11集群配置》。  redis-3.0.0开始支持集群,redis-4.0.0开始支持module,redis-5.0.0开始支持类似于kafka那样的消息队列。  本文参考官方文档而成:...

    redis desktop manager(redis桌面管理器)下载(0.8.3)

    redis-desktop-manager-0.8.3.3850.rar windows平台安装文件 Redis Desktop Manager(redis桌面管理器)是一款非常实用的跨平台Redis桌面管理软件。也被称作Redis可视化工具,是一款开源软件,支持通过SSH Tunnel连接...

    Redis面试题50道(含答案)_.pdf

    1、什么是 Redis? 2、Redis 相比 memcached 有哪些优势? 3、Redis 支持哪几种数据类型? 4、Redis 主要消耗什么物理资源? 5、Redis 的全称是什么? 6、Redis 有哪几种数据淘汰策略? 7、Redis 官方为什么不提供 ...

    redis获取命令字典的方法及全部的group命令.txt

    本地安装redis,通过安装目录下的redis客户端程序可以连接任意Redis服务(只要服务端是启动着的),命令 redis-cli -h ip -p port。如果服务端要求认证资格,可能还要输入用户名密码等参数。 Redis命令十分丰富,...

    redis安装离线版免编译版及离线安装需要的所有包文件

    本资源可结合我的文章《详解CentOS7下编译安装Redis5.x设置开机启动及修改端口(含redis需编译安装包和redis免编译安装包)》配合使用,同时也可单独去使用。包含redis3.0.7免编译版安装包,redis5.0.7离线安装包,...

    SpringBoot+VUE+Redis+nginx 网上拍卖平台源码.zip

    SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+VUE+Redis+nginx 网上拍卖平台源码 SpringBoot+...

    redis_4.0.10-1_arm64.deb 银河麒麟v4+飞腾

    1、redis_4.0.10-1_arm64.deb 银河麒麟v4+飞腾 安装包 2、自带服务启动 3、目录树 /opt/redis-4.0.10/ ├── bin │ ├── redis-benchmark │ ├── redis-check-aof │ ├── redis-check-rdb │ ├── ...

    redis视频教程百度网盘下载地址及密码

    2016122201_Redis_初探_1.mp4 2016122201_Redis_初探_2.mp4 2016122201_Redis_初探_3.mp4 2016122202_Redis_安装_字符串键_1.mp4 2016122202_Redis_安装_字符串键_2.mp4 2016122202_Redis_安装_字符串键_3.mp4 ...

    redis-x64-4.0.2.3,windows版本

    右键解压Redis压缩包,把所有文件解压到指定的redis文件夹中 1.配置redis.windows.conf文件,除了port配置为对应的端口外,其他根据需要可更改的配置项说明如下: (1)bind 127.0.0.1 (line:79) # 设置为其他机器...

    redis桌面链接工具redis-desktop

    redis桌面链接工具redis-desktop Redis Desktop Manager(简称RDM)是一款跨平台的Redis数据库管理工具,它提供了一个直观且用户友好的图形界面,允许开发者和运维人员轻松地连接到Redis服务器,并对其进行管理和...

    1.2.6版StackExchange.Redis

    1.2.6版StackExchange.Redis。 StackExchange.Redis是.net下的Redis客户端之一,目前是免费的。而用户量比较多的ServiceStack.Redis现在是收费的。把下载的三个文件(StackExchange.Redis.dll、StackExchange.Redis....

    Redis入门指南(第2版)电子书

    《Redis入门指南(第2版)》是一本Redis的入门指导书籍,以通俗易懂的方式介绍了Redis基础与实践方面的知识,包括历史与特性、在开发和生产环境中部署运行Redis、数据类型与命令、使用Redis实现队列、事务、复制、...

Global site tag (gtag.js) - Google Analytics