Redis入门笔记-阿里云开发者社区

开发者社区> 数据库> 正文

Redis入门笔记

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

Redis入门笔记

一、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重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

原文地址http://www.bieryun.com/3156.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章