Redis入门笔记

本文涉及的产品
云数据库 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
相关文章
|
1天前
|
存储 NoSQL Linux
Redis入门到通关之Redis5种网络模型详解
Redis入门到通关之Redis5种网络模型详解
|
1天前
|
存储 NoSQL 算法
Redis入门到通关之Redis数据结构-Hash篇
Redis入门到通关之Redis数据结构-Hash篇
10 1
|
1天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-List篇
Redis入门到通关之Redis数据结构-List篇
|
1天前
|
存储 NoSQL 安全
Redis入门到通关之Redis数据结构-String篇
Redis入门到通关之Redis数据结构-String篇
|
1天前
|
存储 NoSQL Redis
Redis入门到通关之数据结构解析-SkipList
Redis入门到通关之数据结构解析-SkipList
|
1天前
|
存储 NoSQL 安全
Redis入门到通关之数据结构解析-动态字符串SDS
Redis入门到通关之数据结构解析-动态字符串SDS
|
1天前
|
NoSQL Redis
Redis入门到通关之Redis主从数据同步原理
Redis入门到通关之Redis主从数据同步原理
|
1天前
|
存储 NoSQL Java
Redis入门到通关之数据结构解析-Dict
Redis入门到通关之数据结构解析-Dict
|
1天前
|
存储 数据采集 NoSQL
Redis入门到通过之Redis实现全局唯一id
Redis入门到通过之Redis实现全局唯一id
|
1天前
|
存储 缓存 NoSQL
Redis入门到通关之Redis缓存数据实战
Redis入门到通关之Redis缓存数据实战

热门文章

最新文章