Redis学习与使用

目录

一、Redis介绍与安装

二、Redis的常用命令与数据类型

三、在Java中操作Redis

1.Java客户端-Jedis

1.引入依赖

2.创建连接

2.利用Jedis缓存数据


一、Redis介绍与安装

Redis介绍:

1.Redis是Key-Value型NoSQL数据库(不需要SQL进行操作

2.Redis将数据存储在内存中,同时也能持久化到磁盘

3.Redis常用于缓存,理工内存的高效提高程序的处理速度

Redis特点:

1.速度快

2.广泛的语言支持

3.持久化

4.多种数据结构

5.主从复制

6.分布式与高可用

Redis的下载安装:

1.在linux的shell中:

cd /usr/local       //进入要创建目录的地方

 mkdir redis        //创建目录

 cd redis        //进入目录

 yum install gcc        //安装gcc组件

# wget http://download.redis.io/redis-stable.tar.gz
# tar xzf redis-6.0.8.tar.gz
# cd redis-6.0.8
# make

 Linux中启动Redis:

 cd src

 ./redis-server ../redis.conf        //使用指定配置启动redis

./redis-server                //按默认配置启动redis

 

 2.Windows下安装Redis:

https://github.com/MicrosoftArchive/redis/releases

Windows版本为3.x,版本滞后,不可以用在项目上线。

 将文件解压到D:\redis目录下。

windows中启动Redis:

 双击 redis-server.exe,启动 Redis 服务(windows中)。

也可以在命令行中进入redis目录的src目录下带conf配置的执行server:

redis-server redis.windows.conf


Linux中设置Redis的常用配置:

Shell终端,在redis-6.0.8目录中打开conf配置文件进行设置:

vim redis.conf

第136行:daemonize,设置是否后台运行,守护进程。

第92行:port,端口号,一般不设置成6379端口号,如改成6380。

修改端口号后启动cli,要带端口启动:

.src/redis-cli -p 6380

第171行:logfile "redis.log"  将日志输出到

第186行:修改数据库总量

第263行:修改数据文件的保存路径

第507行:设置密码12345

设置密码后,启动服务以及cli后要输入密码才能使用:

./src/redis-service redis.conf 

./src/redis-cli -p 6380 

auth 12345                //需要填写密码才能使用

启动redis-cli:

进入redis-6.0.8目录执行:

./src/redis-cli        //启动redis-cli

exit                     //关闭redis-cli

通过cli停止redis服务:

进入redis-6.0.8目录执行:

./src/redis-cli shutdown

暴力停止Redis服务:

netstat tulpn        //查看进程

kill -9 PID        //PID为Redis的进程id

二、Redis的常用命令与数据类型

Redis五种数据类型:

1.String -字符串类型

2.Hash -Hash类型(Map中又含有Map

3.List -列表类型(数组

4.Set -集合类型(不允许重复

5.Zset -有序集合类型

1.String字符串:

 2.Hash键值类型:

 

 3.List列表类型:

List列表就是一些列字符串的“数组”,按插入顺序排序,List列表的最大长度为2的32次方-1,可以包含40亿个元素。

lrange list start stop        //输出list表的第start到stop位的所有元素,

lrange list 0 -1        //输出列表所有元素

4.set与Zset集合类型:

sadd set1 a        //创建一个有a元素的set1集合

smembers set1        //查看set1内的所有元素

sinter set1 set2        //查看set1和set2相同的元素,即取交集

 sunion set1 set2        //将2个集合合并一起并去掉重复元素,取并集

 sdiff set1 set2        //取set1中有,set2中没有的元素,即取差集


 zadd zset1 100 a        //创建一个分数为100,元素为 a 的zset1集合,100为分数,按照分数进行排序

zrange zset1 0 -1        //显示zset1中所有元素

zrange zset1 0 -1 withscores        //带分数输出

 zrangebyscore zset1 101 103        //输出分数101 103内的元素

三、在Java中操作Redis

1.Java客户端-Jedis

1.Jedis是Java语言开发的Redis客户端工具包

2.Jedis是对Redis命令的封装,掌握Redis命令便可轻易上手

远程访问CentOS系统的Redis需要对CentOS系统进行以下设置:

1.对redis.conf进行设置:

第88行:protected mode yes 修改成 protected mode no,允许其他主机连接进来

第69行:bind 127.0.0.1 修改成 bind 0.0.0.0 所有主机IP都可以连接进来。(项目上线不可设置成这样!

2.防火墙通行6379端口
在shell中执行:

firewall-cmd --zone=public --add-part=6379/tcp --permanent        //permanent永久生效

 firewall-cmd --reload        //重启防火墙

可以在github中找到Jedis项目:

https://github.com/redis/jedis

1.引入依赖

在maven工程中的pom.xml引入依赖:

    <dependencies>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.2.3</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>
        
        <!--json序列化-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.54</version>
        </dependency>
    </dependencies>

2.创建连接

 在类中创建连接:

package com.yygs.jedis;

import redis.clients.jedis.Jedis;

import java.util.List;

public class JedisTestor {
    public static void main(String[] args) {
        // ip和端口号
        Jedis jedis = new Jedis("192.168.132.144",6379);
        try {
            
            jedis.auth("12345");        //密码
            jedis.select(2);            //选择数据库号
            System.out.println("Redis连接成功");
            //字符串
            jedis.set("sn","7781-9938");
            String sn = jedis.get("sn");
            jedis.mset(new String[]{"title", "婴儿奶粉", "num" , "20"});
            List<String> goods = jedis.mget(new String[]{"sn", "title", "num"});
            long num = jedis.incr("num");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jedis.close();              //关闭连接
        }

    }
}

2.利用Jedis缓存数据

 创建实体类

package com.yygs.jedis;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Goods {
    private Integer goodsId;
    private String goodsName;
    private String description;
    private Float price;
}

创建Jedis连接进行缓存

package com.yygs.jedis;

import com.alibaba.fastjson.JSON;
import redis.clients.jedis.Jedis;

import java.util.ArrayList;
import java.util.List;

public class CacheSimple {
    public CacheSimple() {
        String goodsId = "8819"
        Jedis jedis = new Jedis("192.168.132.144");
        try {
            List<Goods> goodsList = new ArrayList<>();
            goodsList.add(new Goods(8818, "红富士", "", 3.5f));
            goodsList.add(new Goods(8819, "进口橙", "", 4f));
            goodsList.add(new Goods(8820, "进口香蕉", "", 3.1f));
            jedis.auth("12345");
            jedis.select(3);
            for (Goods goods : goodsList) {
                //序列化
                String json = JSON.toJSONString(goods);
                String key = "goods" + goods.getGoodsId();
                //存入缓存
                jedis.set(key, json);
            }

            String key = "goods:" + goodsId;
            if (jedis.exists(key)) {
                //取数据
                String json = jedis.get(key);
                System.out.println(json);
                //反序列化
                Goods goods = JSON.parseObject(json, Goods.class);
            }else{
                System.out.println("您输入的商品编号不存在");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jedis.close();
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值