Redis

目录

1、Nosql定义和分类 

1.1什么是NoSql

1.2NoSql的分类

1.2.1键值(Key-Value)存储数据库

1.2.2列存储数据库

1.2.3文档型数据库

1.2.4图形(Graph)数据库

2、Redis定义,历史和应用场景 

2.1什么是redis

2.2redis历史发展

2.3redis的应用场景

3、Redis下载和安装 

3.1windows版下载和安装

3.1.1Redis的目录结构

3.1.2启动redis服务端

3.1.3启动redis客户端

3.1.4图形化界面客户端

3.1.5指定配置启动redis服务

3.2Linux版下载和安装

3.2.1下载

3.2.2安装

3.2.3运行redis

3.2.4后台启动

3.2.5查看是否启动成功

3.2.6关闭redis服务

3.2.7使用桌面管理工具连接Linux redis

3.2.8以服务方式启动redis

3.3清缓存命令

4、Redis的String数据类型的赋值取值删除 

4.1命令

4.1.1赋值

4.1.2取值

4.1.3取值并赋值

4.1.4设置/获取多个键值 

4.1.5删除

 4.1.6数值增减

5、Redis的Hash数据类型的赋值取值删除 

5.1使用string的问题

5.2redis hash介绍

5.3命令

5.3.1赋值

5.3.2取值 

5.3.3删除字段

5.3.4增加数字 

6、Redis的List数据类型的赋值取值删除 

6.2命令

6.2.1向列表两端增加元素

6.2.2查看列表 

6.2.3从列表两端弹出元素 

6.2.4获取列表中元素的个数 

6.2.5可添加重复元素

7、Redis的Set数据类型的赋值取值删除 

7.1命令

7.1.1增加/删除元素 

​7.1.2获得集合中的所有元素 

7.1.3判断元素是否在集合中

7.2运算命令

7.2.1集合的差集运算 A-B

7.2.2集合的交集运算 A ∩ B

7.2.3集合的并集运算 A ∪ B

8、Redis的SortedSet数据类型的赋值取值删除

8.1Sortedset 

8.2命令

8.2.1增加元素

8.2.2获取元素的分数 

8.2.3删除元素

8.2.4获得排名在某个范围的元素列表

8.2.5获取元素的排名 

9、Keys命令

9.1常用命令

9.1.1keys

 9.1.2exists

9.1.3del

9.1.4rename

9.1.5type

9.1.6设置key的生存时间

10、SpringBoot整合Redis 

10.1新建SpringBoot工程,引入Web,Redis的场景启动器

10.2application.yml配置redis地址

10.3在使用处注入StringRedisTemplate或者RedisTemplate

10.3.1StringRedisTemplate

简单的设值获取值

 HashOperations操作Hash类型的数据

 ListOperation操作List数据类型

SetOperations 操作set类型数据

 ZSetOperations 操作 可以排序的集合类型

10.3.2RedisTemplate

10.3.2.1redisTemplate默认如果保存对象,使用jdk序列化机制

​10.3.2.2改变jdk的序列化规则  (RedisConfiguration)

11、持久化

11.1Redis持久化概述

11.2RDB持久化

1.redis.windows.conf配置文件

2.重启服务器,并指定配置文件

3.启动客户端

4.重新启动服务器和客户端,不需要指定配置文件。

11.3AOF持久化

1.redis.windows.conf配置文件

2.重启服务器,指定配置文件

3.启动客户端,1秒持久化一次

4.关闭并重启服务器(指定配置文件)和客户端,在客户端获取,结果如下:

Redis为什么这么快?


1、Nosql定义和分类 

1.1什么是NoSql

NoSql,叫非关系型数据库,它的全名Not only sql。为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql。它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。

1.2NoSql的分类

1.2.1键值(Key-Value)存储数据库

相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 
数据模型: 一系列键值对
优势: 快速查询
劣势: 存储的数据缺少结构化

1.2.2列存储数据库

相关产品:Cassandra, HBase, Riak
典型应用:分布式的文件系统
数据模型:以列簇式存储,将同一列数据存在一起
优势:查找速度快,可扩展性强,更容易进行分布式扩展
 劣势:功能相对局限

1.2.3文档型数据库

相关产品:CouchDB、MongoDB
典型应用:Web应用(与Key-Value类似,Value是结构化的)
数据模型: 一系列键值对
 优势:数据结构要求不严格
 劣势: 查询性能不高,而且缺乏统一的查询语法

1.2.4图形(Graph)数据库

相关数据库:Neo4J、InfoGrid、Infinite Graph
典型应用:社交网络
数据模型:图结构
优势:利用图结构相关算法。
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

2、Redis定义,历史和应用场景 

2.1什么是redis

Redis是使用c语言开发的一个高性能键值数据库。Redis可以通过一些键值类型来存储数据。
键值类型:

  • String字符类型
  • map散列类型hash
  • list列表类型
  • set集合类型
  • sortedset有序集合类型

2.2redis历史发展

    2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,然而没过多久该公司的创始人 Salvatore Sanfilippo便 对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。 不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品,而是希望更多的人使用它,于是在同一年Salvatore Sanfilippo将Redis开源发布,并开始和Redis的另一名主要的代码贡献者Pieter Noordhuis一起继续着Redis的开发,直到今天。

    Salvatore Sanfilippo自己也没有想到,短短的几年时间,Redis就拥有了庞大的用户群体。Hacker News在2012年发布了一份数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、街旁网、知乎网,国外如GitHub、Stack Overflow、Flickr等都是Redis的用户。

    VMware公司从2010年开始赞助Redis的开发, Salvatore Sanfilippo和Pieter Noordhuis也分别在3月和5月加入VMware,全职开发Redis。

2.3redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
分布式集群架构中的session分离。

聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)

3、Redis下载和安装 

3.1windows版下载和安装

 window版下载地址:https://github.com/MicrosoftArchive/redis/releases
下载Redis For  window X64.zip,解压到指定目录

3.1.1Redis的目录结构

 

 Redis.windows.conf:redis的配置文件。文件内可以声明redis的端口号,database的数量,密码,是否后台运行,持久化机制,日志等信息。
Redis-server.exe:redis服务端,可以启动redis服务。
Redis-cli.exe: redis自带客户端,启动以后即可连接服务端,通过以命令的形式向redis服务中存取数据,也可以关闭redis服务。

3.1.2启动redis服务端

双击 redis-server.exe ,启动成功,出现如下界面。端口号6379,pid:16316,如果关闭当前窗口,相当于关闭redis服务。

或者以命令行的方式启动redis,在当前目录下输入redis-server即可启动redis服务

3.1.3启动redis客户端

双击redis-cli.exe即可启动客户端:如下图表示,则已经连上服务端,可以通过命令存取数据了。
如果服务端设置了密码,在运行客户端连接服务端时,需要加上密码
./redis-cli -a 123456  -------123456为密码

 或者

3.1.4图形化界面客户端

RedisDesktopManager以图形化界面的方式操作redis中的数据。安装redis桌面管理工具。
建立连接:

输入名称,主机ip,默认端口号6379,即可连接redis服务器。

 Redis默认有16个数据库,如果不指定,默认使用database0

   向第一个数据库中添加,修改,删除数据。

3.1.5指定配置启动redis服务

Redis启动时可以不指定配置文件,会使用默认配置启动。也可以指定配置文件。如果我们修改了配置文件的内容,希望指定以某个配置文件启动,则使用如下方法启动
复制配置文件redis.windows.conf,改名为redis.conf,修改使用密码123456登录。

以该配置文件运行redis服务:

此时,再通过图形化客户端连接服务时,必须指定密码才可以,否则会连接失败。

3.2Linux版下载和安装

3.2.1下载

官网:https://redis.io/download,选择稳定版本。

3.2.2安装

1.解压

通过xftp把redis安装包上传到指定文件夹。

解压:tar -zxvf redis-6.0.6.tar.gz

 

 2.安装

由于redis依赖c语言环境,所以先安装gcc
[root@localhost ~]# yum install gcc
如果是线上下载安装包的话,先进入目录  usr/local,下载安装包
[root@localhost local]# wget http://download.redis.io/releases/redis-6.0.6.tar.gz
解压
[root@localhost local]# tar -xvf redis-6.0.6.tar.gz
安装好了c语言环境以后,需要编译redis,进入解压后的目录
[root@localhost local]# cd /usr/local/redis-6.0.6/
编译
[root@localhost local]# make
安装,如果不指明安装路径,就会在当前路径下安装,指明安装路径,会在指明的路径下生成bin文件夹,bin里面是redis的命令
[root@localhost redis-6.0.1]# make PREFIX=/usr/local/redis-6.0.6 install

进入bin

注意:如果在编译的时候报错如下:等等,太长了,不列举了。
m ake[1]: *** [server.o] 错误 1
make[1]: 离开目录“/usr/redis-6.0.6/src”
make: *** [all] 错误 2
server.c:2402:11: 错误:‘struct redisServer’没有名为‘assert_file’的成员
     server.assert_file = "<no file>";
server.c:2403:11: 错误:‘struct redisServer’没有名为‘assert_line’的成员
     server.assert_line = 0;
server.c:2404:11: 错误:‘struct redisServer’没有名为‘bug_report_start’的成员
     server.bug_report_start = 0;

解决办法:升级gcc版本
[root@localhost redis-6.0.6]# gcc -v                             # 查看gcc版本
[root@localhost redis-6.0.6]# yum -y install centos-release-scl  # 升级到9.1版本
[root@localhost redis-6.0.6]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@localhost redis-6.0.6]# scl enable devtoolset-9 bash
以上为临时启用,如果要长期使用gcc 9.1的话:
[root@localhost redis-6.0.6]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
在执行编译就没有问题了,安装成功,会提示:

 

 执行make test,可能会出现如下错误:
[root@localhost redis-6.0.6]# make test
cd src && make test
make[1]: 进入目录“/usr/redis-6.0.6/src”
    CC Makefile.dep
make[1]: 离开目录“/usr/redis-6.0.6/src”
make[1]: 进入目录“/usr/redis-6.0.6/src”
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] 错误 1
make[1]: 离开目录“/usr/redis-6.0.6/src”
make: *** [test] 错误 2
解决办法:
[root@localhost redis-6.0.6]# yum install tcl
[root@localhost redis-6.0.6]# make test
重新测试成功。

3.2.3运行redis

以某个配置文件启动redis服务,一定要注意配置文件的路径

3.2.4后台启动

上面redis的启动方式,是前端启动,一关闭客户端,redis的服务也就停掉了,所以这种启动方式非常不友好。我们可以修改配置文件中的启动方式:
[root@localhost redis-6.0.6]# vim redis.conf
进到redis.conf文件里,然后找到daemonize no把no改为yes

 启动的时候指定修改之后的配置文件即可。

3.2.5查看是否启动成功

3.2.6关闭redis服务

 或者:

 如果redis设置了密码,则以下面方式关闭,123456为密码

3.2.7使用桌面管理工具连接Linux redis

修改redis配置文件,注释掉bind 127.0.0.1

 保护模式关闭:


设置密码:

3.2.8以服务方式启动redis

1.把redis加入service服务
vim /lib/systemd/system/redis.service
2.写入
[Unit]
Description=redis
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis-6.0.6/src/redis-server /usr/local/redis-6.0.6/etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
注意路径问题,以及PIDFile的路径对应的是redis-6.0.6/redis.conf里面的PIDFile
保存,退出。

3.运行以下

[root@localhost redis-6.0.6]# systemctl enable redis.service          # 加入开机启动

[root@localhost redis-6.0.6]# systemctl is-enabled redis.service      # 查看开机是否启动成功
enabled

[root@localhost redis-6.0.6]# systemctl start redis                 #开启redis服务

[root@localhost redis-6.0.6]# systemctl status redis            //查看redis运行状态

3.3清缓存命令

把缓存键值对清空。

4、Redis的String数据类型的赋值取值删除 

4.1命令

4.1.1赋值

语法:set key value

4.1.2取值

语法:get key

4.1.3取值并赋值

 语法:GETSET key value

4.1.4设置/获取多个键值 

语法:
mset key value [key value …]

mget key [key …]

4.1.5删除

语法:del key
127.0.0.1:6379> del test
(integer) 1

 4.1.6数值增减

递增数字 
当存储的字符串是整数时,Redis提供了一个实用的命令INCR(increate),其作用是让当前键值递增,并返回递增后的值。

语法:incr key</

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值