Redis入门

一、简介

Redis是一个基于内存的key - value结构数据库,是非线性数据库

与Mysql的区别在哪?

  • Mysql是将数据以数据文件的方式存储在磁盘上,是磁盘存储。而Redis是内存存储
  • Mysql是以二维表的方式存放数据,而Redis是以键值对的方式存放数据 

既然都是数据库,已经使用了Mysql为什么还要使用Redis

  • 基于内存存储,读写性能高
  •  适合存储热点数据(热点商品、资讯、新闻)
  • Redis不是用来取代Mysql的,而是来补充Mysql的。一般都是Mysql与Redis同时使用
  • 企业广泛应用

特点

  • 方便拓展(数据之间无关系,方便拓展)
  • 大数据高性能(Redis一秒写8w次,读11w条数据)
  • 数据类型是多样型的(无需事先设计数据库,随取随用)

如用户的个人信息,地理位置这些数据类型不需要一个固定的格式,不需要多余的操作就可以横向拓展,如Map<String,Onject>


二、使用

Redis安装包分为Windows版和Linux版,一般都是使用Linux版本,将Redis部署在Linux版本上。

Windows版

1、Github下载地址:Releases · microsoftarchive/redis · GitHub

2、解压缩

3、运行服务 

在解压后文件夹中cmd输入

redis-server redis.windows.conf

4、连接 

双击

 

它会默认连接本地的Redis,且默认端口号为6379。127.0.0.1就是localhost

如果此时想要连接远程的redis,那么就要在命令行窗口cmd中使用指令

redis-cli.exe -h [ 主机IP ] -p [端口号]

5、图形化界面连接

打开Redis Desktop Manager 

测试

连接成功 

修改配置信息

此时的redis没有设置密码,任何人都可以连接进来,这并不安全。因此我们要去配置文件redis.windows.conf文件中修改

先关闭redis服务,查找requirepass配置项,后面配置密码

也可以修改默认端口号,查找port配置项,一般都使用这个默认的端口号就行了

保存后再来启动redis服务

那么之后连接redis时就会要求输入密码。与Mysql不同的是,Redis并没有用户的概念,不像Mysql连接的时候一样要输入用户名和密码才行,redis只需要输入密码即可。

此时我们尝试直接连接redis,发现不能ping成功,报错说需要认证

因此需要在连接的时候在指令后面加上选项-a

redis-cli.exe -a [密码]

连接成功

图形化操作界面

gitee下载地址:AnotherRedisDesktopManager 发行版 - Gitee.com

这里使用的工具是AnotherRedisDesktopManager,相较于传统的RedisDesktopManager,性能更加出众,界面也更加美观


三、Redis常用数据类型

再次强调,Redis存储的是key-value结构的数据,其中key一定是字符串类型,而value有5种常用的类型

1、字符串类型

普通字符串,Redis中最简单的数据类型

2、哈希类型

散列,类似于Java中的HashMap结构,上图中可以看到它也是键值对方式

这种结构一般可以用来存储对象,如key就是对象,则value中的key1就是属性,value中的value1就是属性对应的值

3、列表类型

队列,按照插入顺序排列,可以有重复的元素,类似于java中的List。

4、集合类型

又叫无序集合,没有重复元素,类似Java中的HashSet

5、有序集合

集合中每个元素关联一个分数,根据分数升序排序,没有重复元素

这种结构适合存储排行榜一类有顺序的数据

数据操作指令

与Mysql操作数据不同,Mysql不同数据的增删改查都用一个指令,比如插入就直接insert,并不在乎插入的是什么类型。

而Redis不同的数据类型所对应的指令是不一样的。

1、字符串操作指令

指令作用
set key value设置指定key的值
get key获取指定key的值
setex key seconds value设置指定key的值,并将key的过期时间设置为seconds秒
setnx key value只有key不存在时才设置key的值并返回1,否则返回0
del key删掉这整个指定的字符串

2、哈希操作指令

指令作用
hset key field value将哈希表key中字段field的值设为value
hget key field获取存储在哈希表中指定字段的值
hdel key field删除存储在哈希表中的指定字段
hkeys key获取哈希表中的所有字段
hvals key获取哈希表中的所有值
del key删除掉这整个哈希表

 

 

3、 列表操作指令

指令作用
lpush key value [value2]将一个或多个值插入到列表头部
lrange key start stop获取列表指定范围内的元素(类似分页查询)
rpop key移除并返回列表的最后一个元素
llen key获取列表长度

同样创建一个列表,其中存放三个值 a b c

那么此时列表的数据长这个样子

这就是队列的插入方式,在列表头部插入,而不是像java的arrayList尾部插入,再插入几条数据就清晰了

此时最一开始先插入的a就是尾部,rpop移除的就是它了

4、集合操纵命令

指令作用
sadd key member1 [member2] ...向集合中添加一个或多个成员
smembers key返回集合中的所有成员
scard key获取集合中成员数
sinter key1 [key2]返回给定所有集合的交集
sunion key1 [key2]返回给定所有集合的并集
srem key member1 [member2]删除集合中一个或多个成员

5、 有序集合操纵命令

指令作用
zadd key score1 member1 [score2 member2]向有序集合添加一个或多个成员
zrange key start stop [WITHSCORES]向索引区间返回有序集合中指定区间内的成员,withscores就是将分数也带上
ZINCRBY key increment member有序集合中对指定成员的分数加上增量increment
zrem key member [member...]移除有序集合中的一个或多个成员

6、通用命令

  指令作用
keys pattern查找所有符合给定模式(pattern)的key
keys *就是上一个指令 * 表示全部类型的key
exists key检查给定key是否存在
type key返回key所储存的值的类型
del key当key存在时删除key

 


 

四、在Java中操作redis

Redis的Java客户端

  • Jedis
  • Lettuce
  • Spring Data Redis

Spring Data Redis时Spring的一部分,对Redis底层开发包进行了高度封装。

在Spring项目中,可以使用Spring Data Redis进行简化开发。

操作步骤

引入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

 

配置Redis数据源 

spring:  
   redis:
    host: localhost
    port: 6379
    password: 123456
    database: 0

注意这个database属性代表的是数据库,redis中有16个数据库,每个库中的数据是完全不互通的

创建一个Redis的配置类

@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());

        return redisTemplate;
    }
}

测试

    @Test
    public void testRedisTemplate(){
        System.out.println(redisTemplate);
    }

连接成功 

  • 25
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

An1ong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值