Redis -小巧快速入门使用

Redis是什么?

Redis是Key-Value型NoSQL数据库。
Redis将数据保存在内存中,同时也能持久化到磁盘上。
Redis常用于缓存,利用内存的高效提高程序的处理速度。

Redis的特点?
1.速度快
2.广泛的语言支持
3.持久化
4.多数据结果
5.主从复制
6.分布式与高可用

Redis的安装与启动

Linux系统的安装

下载,解压,编译:

$ wget http://download.redis.io/releases/redis-5.0.4.tar.gz
$ tar xzf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make

Linux运行:./src/redis-server redis.conf
Windows运行:redis-server redis.windows.conf

Redis的常用基本配置

启动:在redis-4.0.14目录下 输入命令 ./src/redis-server redis.conf 启动Redis (ctrl+c是退出)

关闭:利用redis客户端 关闭=> ./src/redis.cli shutdown

vim redis.conf 进入redis配置文件,可以配置。

redis.conf 文件配置项配置示例说明
daemonizedaemonize yes是否启用后台运行,默认no
portport 6379设置端口号,默认6379
logfilelogfile 日志文件设置日志文件
databasesdatabases 255设置redis数据库总量
dirdir 数据文件目录设置数据文件存储目录
requirepass设置密码输入密码格式:auth 密码

redis-cli 文件是Redis的客户端

[root@Red764 redis-5.0.4]# ./src/redis-cli [若端口改了就要:-p 端口号] 		(进入客户端)
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit		(退出客户端)
[root@Red764 redis-5.0.4]#

Redis的通用命令

进入客户端后,就可以输入类似SQL语句那样的命令了。👇👇👇

命令示例说明
selectselect 0选择 0 号数据库
setset name MJ设置key=name ,value=MJ
getget hello获取key = hello 结果
keyskeys he*根据 Pattern表达式 查询符合条件的Key
dbsizedbsize返回 key 的总数
existsexists a检查key = a 的数据
deldel a删除 key= a 的数据
expireexpire hello 20设置key=hello 20秒后过期
ttlttl hellokey=hello 还有多少时间过期

Redis数据类型

String - 字符串类型

String最大512mb,建议单个kv不超过100kb
在这里插入图片描述

Hash - Hash类型

用于存储结构化数据
在这里插入图片描述

List - 列表类型

在这里插入图片描述
查看列表里的元素:lrange [列表名] [开始] [结束]

Set - 集合类型 和 Zset - 有序集合类型

略…

Java 中使用 Redis

Jedis

jedis 是 java 语言开发的 => Redis 客户端 工具包。jedis只是对Redis命令的封装。

案例🔧🔧🔧: win10 远程 使用Redis

1. 因为Redis的机制只允许本机进行通信访问,远程访问需要修改两个参数:
进入:vim redis.conf 找到88行 => rotected-mode yes(只允许指定的ip才能访问),改成 no
69行 => bind 12x.x.x.x 改成 => bind 0.0.0.0(四个0代表所有ip都能访问进来)
2. 设置防火墙,把Redis的端口号放行出来。
3. 查找jedis客户端。maven仓库有,直接Maven官网搜索:jedis 会出来=> redis.clients
4. 创建工程,加载 jedis依赖。然后就可以用Java使用jedis了。

public class JedisTestor {
    public static void main(String[] args) {
        //创建jedis(客户端)对象,并且连接到Redis服务器
        Jedis jedis = new Jedis("连接ip地址",6379);

        try {
            //如果Redis中设置了密码,就要输入密码
            //jedis.auth("xxx");
            //检测一下 例如:换成2号数据库
            jedis.select(2);
            System.out.println("Redis连接成功");
        }catch (Exception e){
        e.printStackTrace();
        }finally {
            //关闭连接
            jedis.close();
        }
    }
}					控制台输出 ===》》》Redis连接成功




=================================String类型操作==============================
public class JedisTestor {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("连接ip地址",6379);
        jedis.select(2);
        //字符串
        jedis.set("sn","8888-999");
        String sn = jedis.get("sn");
        System.out.println(sn);    ===》》》     8888-999

        jedis.mset(new String[]{"key1","value1","key2","value2"});
        
        List<String> mget = jedis.mget(new String[]{"sn", "key1", "key2"});
        System.out.println(mget);    ===》》》   [8888-999, value1, value2]

        jedis.close();
    }
}
=================================Hash类型==============================
public class JedisTestor {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("连接ip地址",6379);
        jedis.select(2);
        //Hash
        jedis.hset("emp:1","name","迈克");
        String name = jedis.hget("emp:1", "name");
        System.out.println(name);   ===》》》     麦克

        Map map = new HashMap();
        map.put("name","杰克");
        map.put("age","12");
        map.put("id","007");
        jedis.hmset("emp:1",map);
        Map<String, String> map1 = jedis.hgetAll("emp:1");
        System.out.println(map1);   ===》》》     {name=杰克, age=12, id=007}

        jedis.close();
    }
}
=================================List类型==============================
public class JedisTestor {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("连接ip地址",6379);
        jedis.select(2);
        //List
        jedis.del("sample");
        jedis.rpush("sample",new String[]{"a","b","c",});
        jedis.lpush("sample",new String[]{"d","e","f",});
        List<String> sample = jedis.lrange("sample", 0, -1);
        System.out.println(sample);   ===》》》     [f, e, d, a, b, c]

        jedis.lpop("sample");
        jedis.rpop("sample");
        //输出台 会输出瞬时的结果,看不到变更的 所有需要重新加载一边
        sample = jedis.lrange("sample", 0, -1);
        System.out.println(sample);   ===》》》     {name=杰克, a

        jedis.close();[e, d, a, b]

    }
}

利用jedis缓存数据

创建一个Goods实体类,用来模拟从数据库查询的数据。此处省略,下面将直接使用

将数据缓存到redis

public class CacheSample {
    //模拟数据库查询出来的数据
    public CacheSample(){
        Jedis jedis = new Jedis("连接ip地址",6379);
        try {
            List<Goods> goodsList = new ArrayList<Goods>();
            goodsList.add(new Goods(7,"电脑","好看的电脑",1888F));
            goodsList.add(new Goods(8,"电脑1","好看的电脑1",1988F));
            goodsList.add(new Goods(9,"电脑2","好看的电脑2",2088F));
            jedis.select(3);
            for (Goods goods : goodsList){
                //使用了 fatsjosn 序列化字符串 (需要加入依赖)
                String json = JSON.toJSONString(goods);
                System.out.println(json);
                String key = "goods"+goods.getGoogsId();
                jedis.set(key,json);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            jedis.close();
        }
    }

    public static void main(String[] args) {
        new CacheSample();
    }
}
============================控制台输出========================================
{"description":"好看的电脑","goodsName":"电脑","googsId":7,"price":1888.0}
{"description":"好看的电脑1","goodsName":"电脑1","googsId":8,"price":1988.0}
{"description":"好看的电脑2","goodsName":"电脑2","googsId":9,"price":2088.0}

============================Redis客户端输出========================================

1xx.x.x.x:6379[3]> keys *
1) "goods7"
2) "goods9"
3) "goods8"
1xx.x.x.x:6379[3]> get goods7			goods7 是key  一大段json字符串是Value
"{\"description\":\"\xe5\xa5\xbd\xe7\x9c\x8b\xe7\x9a\x84\xe7\x94\xb5\xe8\x84\x91\",\"goodsName\":\"\xe7\x94\xb5\xe8\x84\x91\",\"googsId\":7,\"price\":1888.0}"
1xx.x.x.x:6379[3]> 

提取redis的缓存数据 沿用上面的例子,从上面Redis缓存中 提取数据

在main方法中继续往下写:

public static void main(String[] args) {
        new CacheSample();
        
        //开始提取缓存的数据
        System.out.println("请输入要查询的商品编号:");
        String next = new Scanner(System.in).next();
        Jedis jedis = new Jedis("连接ip地址",6379);
        try {
            jedis.select(3);
            String key = "goods" + next;
            if (jedis.exists(key)){
                String json = jedis.get(key);
                System.out.println(json);
                //转回java对象
                Goods goods = JSON.parseObject(json, Goods.class);
                System.out.println(goods.getGoodsName());
                System.out.println(goods.getPrice());
            }else {
                System.out.println("商品不存在");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            jedis.close();
        }
    }
============================控制台输出========================================
{"description":"好看的电脑","goodsName":"电脑","googsId":7,"price":1888.0}
{"description":"好看的电脑1","goodsName":"电脑1","googsId":8,"price":1988.0}
{"description":"好看的电脑2","goodsName":"电脑2","googsId":9,"price":2088.0}		(这三条是上面案例将数据缓存到Redis里的)
请输入要查询的商品编号:
7
{"description":"好看的电脑","goodsName":"电脑","googsId":7,"price":1888.0}
电脑
1888.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值