Redis数据库简介

合集下载

redis功能介绍

redis功能介绍

redis功能介绍目录1.redis简介 (1)2.redis配置 (2)3.redis缓存锁 (4)4.redis的一些api的介绍 (4)5.redis事务操作 (5)6.redis的容灾策略 (5)7.Redis服务redis.conf配置 (6)8.redis中错误案例 (6)9.redis机器申请案例 (7)1.redis简介有序集合和hash(哈希类型)。

Redis 是一个高性能的key-value数据库。

Redis支持主从同步。

数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。

这使得Redis可执行单层树复制。

从盘可以有意无意的对数据进行写操作。

由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。

同步对读取操作的可扩展性和数据冗余很有帮助。

Redis支持双读写服务器同步功能,这样可以确保在其中一台服务器down机时,可以确保还有一台可以正常使用。

但是双读写功能的服务器对于写操作的性能比较差点。

因为要对两个节点的数据进行同时操作进数据库。

下载地址:/files/redis-2.0.4.tar.gz模拟地址:可以在这个网站进行模拟,但是很多命令不支持。

2.redis配置在我们的maven包中有一个snf-data-cache.jar架包,我们只用引用这个架包,具体如下:<dependency><groupId>com.suning.framework</groupId><artifactId>snf-data-cache</artifactId></dependency>在引用了这个包之后就可以在我们的spring中配置:<bean id="cacheClient"class="com.suning.framework.cache.client.single.BinarySingleClientSup port"><!-- caches.xml的存放路径 --><property name="resources"value="classpath:conf/spring/csc-cache.xml"></property></bean>其中的csc-cahe.xml是数据源。

redis数据库安全设置规范

redis数据库安全设置规范

redis数据库安全设置规范1. 简介Redis是一种高性能的内存数据库,用于存储和检索数据。

然而,由于其默认配置不够安全,容易受到未经授权的访问和攻击。

为了保护Redis数据库中的数据,我们需要进行适当的安全设置和配置。

本文将介绍一些常见的Redis数据库安全设置规范,以帮助确保数据的保密性和完整性。

2. 使用密码进行认证最基本的安全措施是为Redis数据库设置密码进行认证。

默认情况下,Redis没有密码保护,这意味着任何人都可以连接到数据库并进行操作。

为了防止未经授权的访问,应该在Redis配置文件中设置一个强密码。

密码应该是复杂的,并且只有授权的用户能够获取它。

3. 修改默认端口号除了设置密码进行认证,修改默认的Redis端口号也是很重要的安全措施。

默认情况下,Redis使用的是6379端口,这使得攻击者更容易找到和尝试入侵。

为了增加安全性,可以将Redis配置文件中的默认端口改为其他非常用端口。

4. 使用防火墙进行访问控制通过使用防火墙,可以限制对Redis数据库的访问。

只有特定的IP位置区域或IP位置区域段才能连接到数据库。

这样做可以阻止攻击者从他们的位置进行访问,并提供更安全的访问控制。

5. 关闭危险的命令默认情况下,Redis允许执行一些具有破坏性或危险性的命令,如FLUSHALL、FLUSHDB和CONFIG等。

为了增加安全性,应该禁止执行这些命令。

在Redis配置文件中,可以通过设置"rename-command"的选项来禁用或重命名这些命令,以防止被滥用。

6. 限制内存使用由于Redis是一个内存数据库,攻击者可能尝试通过注入大量数据来消耗服务器的内存资源,导致服务拒绝或崩溃。

为了防止这种情况发生,可以在Redis配置文件中设置最大内存使用限制。

当达到限制时,Redis将停止接受写入操作,以防止内存溢出。

7. 使用TLS/SSL进行加密通信为了保护敏感数据在传输过程中的安全性,可以使用TLS/SSL对Redis的通信进行加密。

redis功能

redis功能

redis功能Redis是一款开源的高性能键值存储数据库,常被用作缓存、消息队列、计数器、排行榜等功能中。

Redis具有以下功能:1. 键值存储:Redis以键值对的形式存储数据,键和值可以是任意类型的数据,在写入和读取时都能够快速找到对应的值,以实现高效的数据存储和检索。

2. 缓存:Redis最常见的用途就是作为缓存数据库。

它可以将常用的查询结果缓存在内存中,避免了频繁查询数据库的开销。

由于Redis是基于内存的数据库,读写速度非常快,可以大大加快应用程序的访问速度。

3. 发布/订阅:Redis支持发布/订阅模式,可以实现消息推送和订阅功能。

当有新的消息发布时,所有已经订阅该消息的客户端都会收到相应的通知,这在实现实时消息推送和事件通知等功能时非常有用。

4. 事务:Redis支持事务操作,可以将一组命令组合成一个事务进行执行。

在执行事务过程中,Redis会将事务中的命令作为一个原子操作进行执行,保证了多个命令的原子性。

这在需要保证多个操作的一致性时非常有用。

5. 排行榜:Redis的有序集合数据结构可以用来实现排行榜功能。

利用有序集合的特性,可以实现按照某个字段排序的排行榜,并支持快速的排名查询、范围查询和更新操作。

6. 地理位置:Redis支持地理位置数据存储和查询。

通过使用地理位置相关的数据结构和命令,可以存储和查询经纬度信息,实现位置相关的应用功能,如附近的人、附近的商店等。

7. 持久化:Redis支持数据的持久化存储,可以将内存中的数据保存到磁盘中,以防止数据丢失。

目前有两种持久化方式:快照和AOF日志。

快照方式是将数据以二进制文件的形式保存到磁盘中;AOF方式是将每条写入操作以追加的方式保存到一个日志文件中,以保证数据的持久性。

总之,Redis是一款功能强大的数据库,除了常用的缓存功能外,还支持许多其他功能,如发布/订阅、事务、排行榜、地理位置等。

它的高性能和灵活性使得它在许多应用场景下都能发挥出色的作用。

redis 作用

redis 作用

redis 作用Redis,全称为Remote Dictionary Server,是一个开源的高性能键值对存储系统。

作为一种内存数据库,Redis的最大特点就是速度快。

相比于传统的磁盘数据库,内存数据库的读写速度要快得多。

而Redis作为一种基于内存的数据库,将数据存储在内存中,对于读写操作来说,可以实现一定的QPS(每秒查询率),大大提高了数据的读写效率。

除此之外,Redis还对内存的使用进行了一些优化,能够有效地减少内存的占用,提高内存的利用率。

在实际应用中,Redis具有以下几个主要作用:1. 缓存加速:Redis最常见的应用就是作为缓存系统使用。

将经常访问的数据存储在Redis中,可以大大提高系统的响应速度。

与传统的磁盘缓存相比,Redis由于数据存储在内存中,速度更快,能够处理更高的并发请求。

而且,Redis还支持一些高级数据结构,如Set、List、Hash等,这些结构可以更好地满足不同场景下的需求。

2. 分布式锁:在分布式系统中,经常会遇到并发写问题,为了解决这个问题,可以使用Redis的分布式锁。

当一个请求需要对共享资源进行写操作时,可以先尝试获取锁,只有成功获取锁的请求才能够进入临界区,避免了多个请求同时对共享资源进行写操作导致的数据一致性问题。

3. 发布订阅:Redis还可以用作消息中间件,实现消息的发布和订阅功能。

当一个应用程序需要将消息发送给多个订阅者时,可以将消息发布到Redis的频道中,所有订阅该频道的客户端都能够收到消息。

这种发布订阅模式可以实现解耦,一方面降低了系统间的依赖,另一方面提高了系统的可伸缩性。

4. 数据持久化:Redis不仅可以将数据存储在内存中,还可以将数据持久化到磁盘中,以防止内存故障导致的数据丢失。

Redis提供了两种数据持久化方式,分别是快照持久化和日志持久化。

快照持久化是通过将内存中的数据定期保存到磁盘上的一个快照文件中,以防止系统故障时数据丢失。

【Redis】一、Redis简介及五种数据类型

【Redis】一、Redis简介及五种数据类型

【Redis】⼀、Redis简介及五种数据类型(⼀)Redis简介 Redis(Remote Dictionary Server)是⼀个使⽤ANSI C语⾔编写、遵守BSD协议、⽀持⽹络、可基于内存亦可持久化的⽇志型、Key-Value的开源数据库,并提供多种语⾔的API。

Redis是⼀个key-value的存储系统,它通常也被称为数据结构服务器,因为Redis⽀持丰富的数据类型,值可以是字符串、哈希、列表、集合和有序集合这五种类型。

Redis可以⽤作数据库、分布式缓存和消息中间件,它是⼀个NoSQL数据库。

和其他 key - value 缓存产品(如Memcache)相⽐,Redis具有以下⼏个优势:⽀持数据的持久化。

内存中的数据可以保存到磁盘中,重启的时候可以再次加载使⽤。

丰富的数据类型。

除了简单的key-value的字符串数据,还提供list,set,zset,hash等数据结构的存储。

性能极⾼。

由于数据保存在内存中,redis读的速度是110000次/s,写的速度是81000次/s 。

原⼦操作。

Redis的所有操作都是原⼦性的,就是要么成功执⾏要么失败完全不执⾏。

⽀持数据备份。

Redis提供基于master-slave模式的数据备份。

丰富的特性。

除了五种数据类型,Redis还⽀持发布-订阅(pub-sub)、通知、设置key的过期时间等等。

(⼆)Redis的五种数据类型 Redis⽀持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

每⼀种数据类型都有⼤量的操作命令。

1、字符串(String) 字符串是redis最基本的类型,⼀个key对应⼀个value。

String类型是⼆进制安全的,也就是说redis的String可以包含任何数据,⽐如jpg 图⽚或者序列化的对象。

string 类型的值最⼤能存储 512MB,是最常规的存储类型,值除了是字符串之外,还可以是数字,⼀般⽤于复杂的计数功能。

redis

redis

1.redis简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash 等数据结构的存储。

Redis支持数据的备份,即master-slave模式的数据备份。

2.redis安装在解压之后的目录下直接双击redis-server.exe启动或者使用命令行运行start redis-server.exe redis.window.conf配置时可以使用命令行,也可以修改安装目录下的redis.windows.conf文件启动时如果直接双击redis-server.exe启动,表示默认启动,不会加载配置文件在配置文件redis.windows.conf设置密码,设置密码之后,启动时使用配置文件启动密码才会生效,否则不生效3.配置redis在打开的客户端中使用如下命令,获取所有配置项redis 127.0.0.1:6379> CONFIG GET *使用set和get设置和获得配置,如下:redis 127.0.0.1:6379> CONFIG SET loglevel "notice"redis 127.0.0.1:6379> CONFIG GET loglevel4.redis的数据类型redis中包含四种数据类型,分别是:1).String(字符串)string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

string类型是二进制安全的。

意思是redis的string可以包含任何数据。

比如jpg 图片或者序列化的对象。

Redis的应用和优势

Redis的应用和优势

Redis的应用和优势Redis是一种高性能、非关系型的开源缓存数据库系统。

它常常被作为缓存和会话存储来使用。

本文将介绍Redis的应用场景和优势。

一、应用场景1. 缓存数据Redis可以缓存各种类型的数据,如键值对、列表、集合、有序集合等。

使用Redis作为缓存可以加快应用程序的读写速度,在高并发的场景下发挥优势。

2. 会话存储Redis非常适合用于会话存储,它可以让用户的会话状态存储在内存中,而不是在硬盘中,从而加快了访问速度。

同时,Redis支持数据持久化,可以把内存中的数据保存到硬盘中,以避免数据丢失的问题。

3. 消息队列Redis可以作为消息队列系统使用,支持发布/订阅模式和队列模式。

它可以处理大量消息和任务,实现异步处理和任务分发等功能。

二、优势1. 高性能Redis是一种内存数据库,它的读写性能非常高。

Redis还支持多种数据结构,如哈希表、有序集合、列表等,可以满足各种应用场景的需求。

2. 可靠性高Redis支持主从复制和持久化,可以保证数据的可靠性。

当主节点宕机时,从节点会自动接管,从而避免数据丢失的风险。

3. 简单易用Redis的命令非常简单,易于使用。

通过Redis的命令行界面,可以快速地对数据库进行操作。

同时,其API非常丰富,可用于各种编程语言。

4. 高可用性Redis支持Cluster模式,可以实现节点间的水平扩展。

在高并发和大数据量的场景下,Redis Cluster可以保证高可用性和可伸缩性。

结论:Redis是一种高性能、可靠和易用的缓存数据库,可以满足各种应用场景的需求。

它可以作为缓存、会话存储和消息队列等多种用途。

同时,Redis具有多种优点,如高性能、可靠性高、简单易用和高可用性等。

因此,Redis是一种非常值得使用的数据库系统。

Redis系列(一):Redis简介

Redis系列(一):Redis简介

Redis系列(⼀):Redis简介⼀、Redis概述 Redis是⼀个开源(遵循BSD协议)Key-Value数据结构的内存存储系统,⽤作数据库、缓存和消息代理。

它⽀持5种数据结构:字符串string、哈希hash、列表list、集合set和有序的集合sorted-set。

Redis⽀持Lua脚本,哨兵机制和集群实现⾼可⽤。

适⽤场景:缓存、投票、抽奖、分布式session、排⾏榜、计数、队列、发布订阅等;具体介绍见。

⼆、Redis安装 ②安装gcc:yum install gcc ④执⾏ cp redis‐5.0.2.tar.gz ../ ⑤ cd /root/svr 然后执⾏:tar -xvf redis‐5.0.2.tar.gz: cd redis‐5.0.2: ⑥执⾏:make install PREFIX=/root/svr/redis-5.0.2 ⑦启动redis 执⾏:bin/redis-server ../redis.conf (注意:如果要后台启动需要把redis.conf配置⾥⾯的daemonize改为yes) ⑧验证是否启动成功 ps -ef|grep redis ⑨进去redis客户端:bin/redis-cli ⑩退出客户端:quit三、redis.conf主要配置详解参数解释bind指定 Redis 只接收来⾃于该 IP 地址的请求,如果不进⾏设置,那么将处理所有请求port监听端⼝,默认6379timeout设置客户端连接时的超时时间,单位为秒。

当客户端在这段时间内没有发出任何指令,那么关闭该连接daemonize默认情况下,redis不是在后台运⾏的,如果需要在后台运⾏,把该项的值更改为yesloglevel log等级分为4级,debug, verbose, notice, 和 warning。

⽣产环境下⼀般开启noticelogfile配置log⽂件地址,默认使⽤标准输出,即打印在命令⾏终端的窗⼝上save save <seconds> <changes>⽐如save 60 10000意思60秒(1分钟)内⾄少10000个key值改变(则进⾏数据库保存--持久化rdb)dbfilename rdb⽂件的名称dir数据⽬录,2种持久化rdb、aof⽂件就在这个⽬录replicaof replicaof <masterip> <masterport>:该配置是主从的配置表⽰该redis实例是masterip:masterport的从节点masterauth master连接密码replica-serve-stale-data 当slave跟master失去连接或者正在同步数据,slave有两种运⾏⽅式:1) 如果replica-serve-stale-data设置为yes(默认设置),slave会继续响应客户端的请求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

介绍Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

它支持多种类型的数据结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围查询, bitmaps, hyperloglogs 和地理空间(geospatial)索引半径查询。

Redis 内置了复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions)和不同级别的磁盘持久化(persistence),并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(high availability)。

版本官方版本目前官方版本支持Linux系统和Ubuntu系统。

官方下载地址:http://redis.io/download由于我们的开发项目以Windows为主,所以在此不对官方版本做详细介绍,有兴趣的可以到官网查看。

#### 非官方版本(Windows 版本)官方没有Redis的Windows版本,但是微软开源技术团队(Microsoft Open Tech group)自行开发和维护了一个Win64的版本。

- 微软团队只提供了官方64位版本,而32位版本,需要自己从源代码构建。

- Released版本中提供了msi文件,Redis可以作为Windows服务安装安装服务•下载Win64的压缩文件到一个指定文件夹•打开一个 cmd 窗口使用cd命令切换目录到解压缩的文件夹下运行redis-server.exe redis.windows.conf•redis-server.exe启动Redis服务•redis.windows.conf Redis服务的一些配置,不写则会调用默认设置•端口号默认6379可以通过修改配置文件redis.windows-service.conf修改或CONFIG set命令修改运行客户端•打开一个 cmd 窗口使用cd命令切换目录到解压缩的文件夹运行redis-cli.exe -h 127.0.0.1 -p 6379•redis-cli.exe启动Redis客户端•-h 127.0.0.1服务器IP地址•-p 6379服务器端口号优点1.速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)2.支持丰富数据类型,支持string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

3.支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行4.丰富的特性,可用于缓存,消息,按key设置过期时间,过期后将会自动删除缺点1.redis存储成本高(纯使用内存,单台机器,存储的数据量,跟机器本身的内存大小有关),所以不能当做海量数据库来用。

虽然redis本身有key过期策略,但是还是需要提前预估和节约内存。

如果内存增长过快,需要定期删除数据。

2.如果进行完整重同步,由于需要生成rdb文件,并进行传输,会占用主机的CPU,并会消耗现网的带宽。

不过redis2.8版本,已经有部分重同步的功能,但是还是有可能有完整重同步。

比如,新上线的备机。

3.修改配置文件,进行重启,将硬盘中的数据加载进内存,时间比较久。

在这个过程中,redis不能提供服务。

适合应用场景redis是一种k/v的内存数据库,适合小数据量的存储以及实时要求高的地方,用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度,但是不适合做完整数据库,完整数据库基本上都有一套详细解决方案。

- 取最新的N个数据的操作 - 排行榜取TOP N的操作 - 需要精确设定过期时间的应用(Redis可以通过setex命令设置过期时间) - 计数器应用 - Unique操作,排重 - 实时消息系统 - 构建队列系统 - 缓存Java 使用 Redis安装1.安装 Redis 服务2.配置 Java 运行环境,确保能正常使用Java3.安装 Java Redis 驱动jedis.jar连接到 redis 服务import redis.clients.jedis.Jedis;public class RedisJava {public static void main(String[] args) {//连接本地的 Redis 服务Jedis jedis = new Jedis("localhost");System.out.println("连接成功");//查看服务是否运行System.out.println("服务正在运行: "+jedis.ping());}}存取String类型的数据import redis.clients.jedis.Jedis;public class RedisStringJava {public static void main(String[] args) {//连接本地的 Redis 服务Jedis jedis = new Jedis("localhost");System.out.println("连接成功");//设置 redis 字符串数据jedis.set("runoobkey", "");// 获取存储的数据并输出System.out.println("redis 存储的字符串为: "+ jedis.get("runoobke y"));}}编译结果:连接成功redis 存储的字符串为: 存取List类型的数据import java.util.List;import redis.clients.jedis.Jedis;public class RedisListJava {public static void main(String[] args) {//连接本地的 Redis 服务Jedis jedis = new Jedis("localhost");System.out.println("连接成功");//存储数据到列表中jedis.lpush("site-list", "Runoob");jedis.lpush("site-list", "Google");jedis.lpush("site-list", "Taobao");// 获取存储的数据并输出List<String> list = jedis.lrange("site-list", 0 ,2);for(int i=0; i<list.size(); i++) {System.out.println("列表项为: "+list.get(i));}}}编译结果:连接成功列表项为: Taobao列表项为: Google列表项为: Runoob存取的Keysimport java.util.Iterator;import java.util.Set;import redis.clients.jedis.Jedis;public class RedisKeyJava {public static void main(String[] args) {//连接本地的 Redis 服务Jedis jedis = new Jedis("localhost");System.out.println("连接成功");// 获取数据并输出Set<String> keys = jedis.keys("*");Iterator<String> it=keys.iterator() ;while(it.hasNext()){String key = it.next();System.out.println(key);}}}编译结果:连接成功runoobkeysite-listRedis发布与订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

#### 订阅频道通过SUBSCRIBE命令客户端可以订阅指定的频道,当这个频道有其他客户端推送的消息时,当前客户端就会收到。

例:订阅first和second频道SUBSCRIBE first second消息推送通过PUBLISH命令客户端可以向指定频道推送消息,订阅这个频道的客户端都会收到一条message类型的消息。

例:推送消息"Hello"到first频道PUBLISH first "Hello"退订频道通过UNSUBSCRIBE命令客户端可以推定指定频道。

如果没有频道被指定,即一个无参数的 UNSUBSCRIBE 调用被执行,那么客户端使用SUBSCRIBE命令订阅的所有频道都会被退订。

在这种情况下,命令会返回一个信息,告知客户端所有被退订的频道。

例:退订second频道UNSUBSCRIBE second模式匹配Redis的Pub/Sub实现支持模式匹配。

客户端可以订阅全风格的模式以便接收所有来自能匹配到给定模式的频道的消息。

- 模式匹配订阅命令PSUBSCRIBE - 模式匹配退订命令UNPSUBSCRIBE - 接收消息为pmessage类型SUBSCRIBE firstPSUBSCRIBE f*PSUBSCRIBE news.*注意:如果它订阅的多个模式匹配了同一个发布的消息,客户端可能多次接收一个消息。

#### JAVA实现Redis消息推送 1. 创建一个频道的监听类继承Redis的抽象类JedisPubSub,并实现其抽象方法。

订阅频道,取消订阅,收到消息等状态会对应调用相关的方法。

2. 订阅频道public class TestSubscribe {public static void main(String[] args) {//连接本地的 Redis 服务Jedis jedis = new Jedis("localhost");System.out.println("连接成功");// 创建频道监听对象RedisMsgPubSubListener listener = new RedisMsgPubSubListener ();// 订阅频道,绑定监听jedis.subscribe(listener, "redisChatTest");}}注意:subscribe是一个阻塞的方法,在取消订阅该频道前,会一直阻塞在这,只有当取消了订阅才会执行之后的代码。

相关文档
最新文档