Redis入门笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis入门笔记http://www.bieryun.com/3156.html 一、Redis概述 Redis由来 2008年,意大利的一家创业公司MeRzia推出了一款基于MySQL的网站实时统计系统 LLOOGG,然而没过多久该公司的创始人 SalvatoRe Sanfilippo 便对MySQL 的性能感到失望,于是他决定亲自为 LLOOGG 量身定做一个 数据库,并并于 2009 年开发完成,这个数据库就是Redis。

Redis入门笔记http://www.bieryun.com/3156.html

一、Redis概述

Redis由来

2008年,意大利的一家创业公司MeRzia推出了一款基于MySQL的网站实时统计系统 LLOOGG,然而没过多久该公司的创始人 SalvatoRe Sanfilippo 便对MySQL 的性能感到失望,于是他决定亲自为 LLOOGG 量身定做一个 数据库,并并于 2009 年开发完成,这个数据库就是Redis。

什么是Redis

Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下:
1. 字符串类型
2. 散列类型
3. 列表类型
4. 集合类型
5. 有序集合类型。

Redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)(最多使用);
聊天室的在线好友列表;
任务队列(秒杀、抢购、12306等等);
应用排行榜;
网站访问统计;
数据过期处理(可以精确到毫秒);
分布式集群架构中的session分离。

二、Redis安装、启动和停止

Redis是C语音开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境。如果没有gcc,需要安装gcc:

1、 打开xshell,链接Linux服务器,运行yum install gcc-c++;

这里写图片描述
这里写图片描述
这里写图片描述

至此,gcc环境安装好了,则可以进行redis的安装了。

2、下载压缩包:wget http://download.redis.io/releases/redis-3.0.6.tar.gz

这里写图片描述

3、解压:tar xzf redis-3.0.6.tar.gz

这里写图片描述

3、 进入redis路径下,cd redis-3.0.6,执行‘make’命令进行基本的编译。(如果没有安装gcc,此时会出错);

这里写图片描述

4、make完成;

这里写图片描述

5、安装到指定目录下:make FREFIX=/usr/local/redis install

这里写图片描述

6、回到root下的redis-3.0.6路径下,拷贝redis.conf文件到/usr/local/redis路径下,执行cp redis.conf /usr/local/redis

这里写图片描述

7、进入该目录下,启动redis(但这只是前端启动,启动完了以后无法进行操作,需要ctrl+c退出):

cd /usr/local/redis/bin
这里写图片描述
./redis-server
这里写图片描述

8、接下来,修改redis.conf文件 vim redis.conf

这里写图片描述
将redis.conf文件中该行的“”no”改为“yes”
这里写图片描述

9、重新启动redis并加载配置文件,此时redis已经成功启动

这里写图片描述

10、可以通过以下命令查看redis的启动情况:ps -ef | grep -i redis

可以看出redis的默认端口号为6379
这里写图片描述

11、停止redis:./bin/redis-cli shutdown

这里写图片描述

三、Redis的使用

1、Redis启动

./bin/redis-server ./redis-conf
这里写图片描述

2、进入redis客户端./bin/redis-cli

这里写图片描述

3、查看连接情况,以下情况证明连接成功

这里写图片描述

4、set、get、del、keys *命令进行存入、读取、删除、查看全部key操作;

这里写图片描述

四、Jedis入门

Jedis是Redis官方首选的Java客户端开发包

1、jedis下载地址

https://github.com/xetorthio/jedis

2、jedis使用

1)eclipse新建一个java 项目,例如jedis
2)新建lib文件夹放入以下两个jar包,并Add to Build Path
使用Java操作Redis需要jedis-2.1.0.jar,
下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip
如果需要使用redis连接池的话,还需要commons-pool-1.5.4.jar,
下载地址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip
这里写图片描述
3)jedis的使用
这里写图片描述
这里写图片描述

五、redis的数据结构

1.存储字符串常用命令

1)赋值:set
2)取值:get
3)删除:del
4)扩展命令:incr(递增)、decr(递减)、incrby、decrby、append
这里写图片描述

2.存储hash的常用命令

1)赋值:hset
2)取值
3)删除
4)增加数字
5)自学命令
这里写图片描述
这里写图片描述

3.存储list

1)ArrayList使用数组方式
2)LinkedList使用双向链接方式
3)双向链表中增加数据
4)双向链表中删除数据
常用命令:
1)两端添加
lpush、rpush
这里写图片描述
2)两端弹出
lpop、rpop
这里写图片描述
3)查看列表
lrange
4)获取列表元素个数
llen
这里写图片描述
5)自学命令
lpushx、rpushx、lset、linsert.. before、linsert ..after
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

3.存储set

和list类型不同的是,set集合中不允许出现重复的元素。
常用命令:
1)添加、删除元素
sadd、srem
这里写图片描述
2)获取集合中的元素
smembers(查看所有元素)、sismembers(判断是否在集合内)
3)集合中的差集运算
sdiff
这里写图片描述
4)集合中并集运算
sunion(会去除重复元素)
这里写图片描述
5)集合中的交集运算
sinter
这里写图片描述
6)扩展命令
sranmember(随机输出)、sdiffstore(差集放入一个指定集合中)、sinterstore(交集放入一个指定集合中)、sunionstore(并集放入一个指定集合中)
这里写图片描述

4.存储sorted-set

sorted-set在集合中的位置是有序的
使用场景:游戏排名、微博热点等
常用命令:
1)添加元素
zadd
这里写图片描述
2)删除元素
zrem
这里写图片描述
3)获取元素
zscore
这里写图片描述
4)获取范围
zrange、zrange..withscores
这里写图片描述

5.keys的通用操作

key * //获取全部key
key my? //获取全部my开头的key
del my1 my2 my3 //删除my1 my2 my3的key
exists my1 //判断是否存在my1的key
rename name myname //重命名name为myname
expire myname 1000 //设置myname的过期时间为1000s
ttl myname //查看剩余时间
type myname //查看类型

六、Redis的特性

多数据库

redis默认有db0~db15之多。redis下,数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接到数据库0。可以通过下面的命令来切换到不同的数据库下:
select 0、select 1、select 2….

Redis事务

事务提供了一种“将多个命令打包, 然后一次性、按顺序地执行”的机制, 并且事务在执行的期间不会主动中断 —— 服务器在执行完事务中的所有命令之后, 才会继续处理其他客户端的其他命令。
Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务功能。
一个事务从开始到执行会经历以下三个阶段:开始事务、命令入队、执行事务。
它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务。

七、redis持久化

持久化用于重启后的数据恢复。
两种持久化方式,详细介绍见:
https://www.cnblogs.com/zhoujinyi/archive/2013/05/26/3098508.html
RDB方式:Snapshot(RDB)<二进制文件>,Snapshot快照存储,是默认的持久化方式,即按照一定的策略周期性的将数据保存到磁盘。对应产生的数据文件为dump.rdb,通过配置文件中的save参数来定义快照的周期。
AOF方式: AOF(Append Only File)<二进制文件>比RDB方式有更好的持久化性。由于在使用AOF持久化方式时,Redis会将每一个收到的写命令都通过Write函数追加到文件最后,类似于MySQL的binlog。当Redis重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
121 1
springboot的缓存和redis缓存,入门级别教程
|
2月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
65 8
|
4月前
|
NoSQL 算法 安全
Redis6入门到实战------ 四、Redis配置文件介绍
这篇文章详细介绍了Redis配置文件中的各种设置,包括单位定义、包含配置、网络配置、守护进程设置、日志记录、密码安全、客户端连接限制以及内存使用策略等。
Redis6入门到实战------ 四、Redis配置文件介绍
|
4月前
|
NoSQL Redis 数据安全/隐私保护
Redis6入门到实战------ 二、Redis安装
这篇文章详细介绍了Redis 6的安装过程,包括下载、解压、编译、安装、配置以及启动Redis服务器的步骤。还涵盖了如何设置Redis以在后台运行,如何为Redis设置密码保护,以及如何配置Redis服务以实现开机自启动。
Redis6入门到实战------ 二、Redis安装
|
4月前
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
|
4月前
|
NoSQL 关系型数据库 Redis
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
这篇文章深入探讨了Redis事务的概念、命令使用、错误处理机制以及乐观锁和悲观锁的应用,并通过WATCH/UNWATCH命令展示了事务中的锁机制。
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
|
4月前
|
NoSQL Java Redis
Redis6入门到实战------ 八、Redis与Spring Boot整合
这篇文章详细介绍了如何在Spring Boot项目中整合Redis,包括在`pom.xml`中添加依赖、配置`application.properties`文件、创建配置类以及编写测试类来验证Redis的连接和基本操作。
Redis6入门到实战------ 八、Redis与Spring Boot整合
|
4月前
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
4月前
|
NoSQL Java Linux
Redis6入门到实战------ 六、Redis_Jedis_测试
这篇文章介绍了如何使用Jedis客户端连接Redis,并进行基本的数据类型操作测试,包括字符串、列表、集合、哈希和有序集合的相关API使用示例。
Redis6入门到实战------ 六、Redis_Jedis_测试
|
4月前
|
NoSQL Redis
Redis6入门到实战------ 五、Redis的发布和订阅
这篇文章介绍了Redis的发布和订阅机制,包括其基本概念、客户端如何订阅频道以及如何发布消息给订阅者。