Redis开发 - 1. 认识redis

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 1. 什么是Redis? Redis is a very fast non-relational database that stores a mapping of keys to five different types of values. (Redis是一种速度非常快的非关系型数据库,NoSql的一种,它存储着以键值对为形式的数据,值的类型5种。

1. 什么是Redis?

Redis is a very fast non-relational database that stores a mapping of keys to five different types of values.

(Redis是一种速度非常快的非关系型数据库,NoSql的一种,它存储着以键值对为形式的数据,值的类型5种。)

Redis是Remote Dictionary Server(远程字典服务器)的缩写。 

 

Redis supports in-memory persistent storage on disk, replication to scale read performance, and client-side sharding to scale write performance. 

(Redis支持内存持久化到磁盘,以复制的形式来扩展读取的性能,以客户端碎片化(client-side sharding)的方式来扩展写的性能。)

 

Sharding is a method by which you partition your data into different pieces.

In this case, you partition your data based on IDs embedded in the keys, based on the hash of keys, or some combination of the two.

Through partitioning your data, you can store and fetch the data from multiple machines, which can allow a linear scaling in performance for certain problem domains. 

(碎片化是一项技术,这项技术将你的数据分割成不同的部分。

这样一来,每个数据碎片将以ID作为它的键,根据哈希码的形式,这样就能把你的数据存储在不同的机器,然后以线性的方式对性能进行扩展。)

 

2. Redis支持的数据类型

字符串(String)

列表(List)

集合(Set)

散列(Hash)

有序集合(ZSet)

 

3. 存储形式

Redis数据库中所有数据都存储在内存中。

优势:由于内存的读写速度远快于硬盘,所以Redis在性能上比其他基于硬盘存储的数据库有明显优势。

eg:

在一台普通的PC上Redis可以每秒读写10万+个键值。

缺点:由于数据存储在内存中,程序退出后内存中的数据会丢失。

为了弥补这一缺点,Redis提供了持久化功能,用于将内存中的数据通过异步的方式写入到硬盘。

由于是异步的,因此不会影响其继续提供其他服务。

 

4. 应用场景

很多情况下,Redis被应用于缓存队列系统等。

当应用于缓存的场景,Redis为每个键值设置生存时间(TTL - Time to Live),生存时间到期后该键值

会自动被删除。

 

5. 安装Redis

Redis兼容大部分POSIX系统(Linux, OS X, BSD)

下载地址:

http://download.redis.io/

1) Linux下安装

首先下载安装包

tar xzf redis-stable.tar.gz

cd redis-stable

make (先编译源代码)

make test (测试源代码是否编译成功)

make install (安装程序)

安装程序实际过程是将可执行程序复制到/usr/local/bin目录,这样以后执行程序的时候不用输入完整的路径。

 

2) OS X下安装

OS X下通过软件包管理工具Homevrew进行。

a. 安装Homebrew

进入终端:

ruby -e"$(curl -fsSKL raw.github.com/mxcl/homebrew/go)"

b. 通过Homebrew安装Redis

brew install redis

c. 配置launchd让Redis岁系统自动运行

终端下输入以下命令:

ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist

 

6. 启动Redis

1) 直接启动

$ redis-server

启动后Redis服务器默认使用6379端口

也可以自定义启动端口,如下:

$ redis-server --port 8918

 

2) 通过初始化脚本启动Redis

在生产环境中,我们推荐用该方法启动Redis(为了稳定)

a. 首先,进入Redis源码目录的utils目录

b. 找到叫redis_init_script的初始化脚本文件

c. 将初始化脚本复制到/etc/init.d目录并且重命名为redis_端口号

    该端口号表示Redis将要监听的端口号

d. 修改脚本中REDISPORT变量的值为你设置的端口号

e. 建立需要的文件夹

    /etc/redis           这里存放Redis的配置文件

   /var/redis/端口号  这里存放Redis的持久化文件

f. 修改配置文件

   网上下载文件模板,将它复制到/etc/redis目录

   将该文件命名为端口号.conf

   然后按照如下信息对配置文件中的部分参数进行配置

   daemonize   yes                                       使Redis以守护进程的模式运行

   pidfile         /var/run/redis_端口号.pid         这是Redis的PID文件位置

   port           端口号                                    设置Redis监听的端口号

   dir             /var/redis/端口号                      设置持久化文件存放位置

g. 使用如下命令启动Redis

   /etc/init.d/redis_端口号 start

h. 使Redis随系统自动启动

   $ sudo update-rc.d redis_端口号 defaults

 

7. 停止Redis

$ redis-cli shutdown

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
存储 缓存 NoSQL
Java开发面试--Redis专区(二)
Java开发面试--Redis专区
137 0
|
9月前
|
消息中间件 缓存 NoSQL
手把手教你云相册项目简易开发 day1 Kafka+IDEA+Springboot+Redis+MySQL+libvips 简单运行和使用
手把手教你云相册项目简易开发 day1 Kafka+IDEA+Springboot+Redis+MySQL+libvips 简单运行和使用
137 0
|
6天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
53 10
|
12天前
|
NoSQL 关系型数据库 MySQL
开发者福音:用IDEA和Iedis2加速Redis开发与调试
开发者福音:用IDEA和Iedis2加速Redis开发与调试
30 0
开发者福音:用IDEA和Iedis2加速Redis开发与调试
|
13天前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
16 0
|
7月前
|
JSON NoSQL Java
126.【Redis - 快速开发使用版】(二)
126.【Redis - 快速开发使用版】
51 1
|
3月前
|
消息中间件 存储 NoSQL
Redis开发最佳实践
Redis开发最佳实践
63 0
|
3月前
|
NoSQL 关系型数据库 MySQL
mysql与redis在java开发过程中的数据一致性问题
mysql与redis在java开发过程中的数据一致性问题
43 4
|
8月前
|
缓存 NoSQL Java
GitHub笔记疯抢竟崩溃!Redis完整开发实战居然包含大厂同款项目
现在阿里、腾讯这样的大厂和大部分互联网公司,基本上都需要使用到Redis技术。网上发布的Java开发工程师岗位的招聘信息,对Redis的要求都是熟练掌握。 而且现在大厂的大部分面试题都和Redis有关,尤其是在阿里、字节、华为、腾讯的后端面试中,只要你的项目中涉及到Redis,面试官大部分都会针对Redis提问!很多Redis的提问还特别深入……没答上来就非常可惜了。 所以千万不要小看Redis! 学习推荐 作为Java程序员,选择学习什么样的技术?什么技术该不该学?去招聘网站上搜一搜、看看岗位要求就十分清楚了,自己具备的技术和能力,直接影响到你工作选择范围和能不能面试成功。
69 0
|
4月前
|
缓存 NoSQL Java
SSM之spring注解式缓存redis->redis整合,redis的注解式开发及应用场景,redis的击穿穿透雪崩
SSM之spring注解式缓存redis->redis整合,redis的注解式开发及应用场景,redis的击穿穿透雪崩
48 0