Redis

1.Redis简介

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。
它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,
同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区
简单来说就是把硬盘中的数据加载到redis缓存中,然后下一次加载时可以直接打开,效率更高,运行速度更快

学习网址:https://www.w3cschool.cn/redis/
www.redis.cn
www.redis.net.cn

Redis用途:1. 数据库(非关系型数据库)2. 缓存
集群:哨兵、主从、分片式

补充:
关系型数据库:Oracle,SqlSever,MySql
非关系型数据库:(noSQL)
redis(基于内存)
mongodb(基于文档)
ehcache(基于文件)

2.Docker中安装Redis

2.1.执行命令

使用Docker安装Redis更为简单
1.打开虚拟机,虚拟机客户端MobaXterm
2.执行以下命令,查看docker是否启用

docker ps
docker ps -a
#启动数据库
docker start mysql1

前两句命令测试docker是否能正常使用,由第三句命令可以看出数据库未打开,docker start mysql1打开数据库

安装Redis

docker run -p 6379:6379 \
-v /home/javaxl/data/myredis/data:/data \
-v /home/javaxl/data/myredis/conf:/usr/local/etc/redis \
-di --name myredis redis:5 \
-- appendonly yes \
--requirepass "123456"

3.安装redis-desktop-manager

安装Redis客户端(双击)
记得换自己的安装路径
在这里插入图片描述
查看是否安装成功
在这里插入图片描述
连接redis数据库

#开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
#跟新防火墙规则
firewall-cmd --reload
#防火墙列表
firewall-cmd --zone=public --list-ports

#防火墙状态
systemctl status firewalld
#启动防火墙
systemctl start firewalld
#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

在这里插入图片描述

docker ps
docker exec -it myredis /bin/bash
redis-cli -h 127.0.0.1 -a 123456

在这里插入图片描述
在这里插入图片描述
然后ping测试一下
打开桌面redis工具,测试成功
在这里插入图片描述
在这里插入图片描述
Redis数据库没有表,是以键值对的形式保存数据的

以上为无密码链接,修改为有密码,并且外部访问的方式如下

#1.客户端redis-cli链接redis,重新测试(Linux)
./src/redis-cli -h 127.0.0.1 -p 6379 -a 123456
#2.docker中redis-cli链接redis,重新测试(Linux)
redis-cli -h 127.0.0.1 -p 6379 -a 123456
ping
select 1

#3.redismanager链接测试成功

4.Redis命令

Redis字符串(String)

在这里插入图片描述
注意:TTL=-1代表永久保存,可用于设置生存时间
在这里插入图片描述
在这里插入图片描述

# set key          //保存
set name zs
set age 12
set sex nan

# get key          //获取
get name

# type key         //查看类型
type age			//string 说明type返回的是键值对存储类型,而不是值存储类型

# keys *或keys key //查看所有或者指定的key
keys *

# SETEX KEY_NAME TIMEOUT VALUE	// 给键值对设置过期时间
setex zs 60 live

# ttl key	// 获取键值对剩余的存活时间
ttl zs

Redis哈希(Hash)

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

# hset key field1 value1 [field2 value2]  #同时将多个field-value设置到哈希表key中
hset user name zs age 12 sex nv

# hget key field                          #获取指定的字段值
hget user age

# hdel key field                          #删除指定的字段值
hdel user age

# hgetall key                             #查询指定key的所有字段
hgetall user

# hexists key field                       #查询指定key中的字段是否存在
hexists user name

# hlen key                                #获取指定key中的长度
hlen user

Redis列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

# lpush key value1 value2 value3          #将一个或多个值插入到列表头部
lpush en a b c d e f g

# llen key                                #获取列表的长度
llen en

# lindex key index                        #根据索引获取列表中的元素
lindex en 1 	#返回f,说明下标从0开始,同时先进后出

# lrange key start sop                    #查看指定范围内的元素
lrange en 1 3	#返回fed,说明下标从0开始,同时先进后出

Redis集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

# sadd key value1 [value2]                #向集合添加一个或多个元素
sadd hobby lanqiu zuqiu bingpangqiu zhuoqiu

# scard key                               #获取集合中的元素数量
scard hobby

# exists key                              #是否存在
exists hobby

有序集合(sort set)

https://www.w3cschool.cn/redis/redis-sorted-sets.html

5.Java代码操作Redis

5.1添加pom依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

5.2java连接

package com.zking.ssm.redis;

import redis.clients.jedis.Jedis;

public class Demo01 {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.238.133", 6379);
        jedis.auth("123456");
        System.out.println(jedis.ping());
        jedis.select(1);
    }
}

运行结果为PONG则连接成功
在这里插入图片描述

5.3java操作redis

5.3.1.Redis字符串(String)

// set key          //保存
jedis.set("string_name","wangwu");
// get key          //获取
System.out.println(jedis.get("string_name"));
//type key         //查看类型
System.out.println(jedis.type("string_name"));
// keys * 或keys key //查看所有或者指定的key
System.out.println(jedis.keys("*"));
//SETEX KEY_NAME TIMEOUT VALUE    // 给键值对设置过期时间
jedis.setex("string_zs",30,"活着");
// ttl key    // 获取键值对剩余的存活时间
System.out.println(jedis.ttl("string_zs"));

5.3.2.Redis哈希(Hash)

//hset key field1 value1 [field2 value2]  #同时将多个field-value设置到哈希表key中
jedis.hset("java_user","name","zs");
jedis.hset("java_user","sex","男");
jedis.hset("java_user","age","12");

//  hget key field #获取指定的字段值
System.out.println(jedis.hget("java_user", "sex"));

// hdel key field #删除指定的字段值
jedis.hdel("java_user","sex");

// hgetall key  查询指定key的所有字段
Map<String, String> java_user_map = jedis.hgetAll("java_user");
System.out.println(java_user_map);

// hexists key field 查询指定key中的字段是否存在
Boolean java_user = jedis.hexists("java_user","sex");
System.out.println(java_user);

// hlen key 获取指定key中的长度
Long java_user_len = jedis.hlen("java_user");
System.out.println(java_user_len);

5.3.3.Redis列表(List)

//lpush key value1 value2 value3 #将一个或多个值插入到列表头部
jedis.lpush("java_hobby", "篮球", "足球", "羽毛球");
// llen key 获取列表的长度
Long java_hobby_len = jedis.llen("java_hobby");
System.out.println(java_hobby_len);
//lindex key index #根据索引获取列表中的元素
System.out.println(jedis.lindex("java_hobby", 0));
// lrange key start sop #查看指定范围内的元素
System.out.println(jedis.lrange("java_hobby", 0, 1));

5.3.4.Redis集合(Set)

// sadd key value1 [value2] 向集合添加一个或多个元素
jedis.sadd("java_set_user","张三","李四","王五","张三丰");
// scard key #获取集合中的元素数量
System.out.println(jedis.scard("java_set_user"));
// exists key 是否存在
System.out.println(jedis.exists("java_set_user"));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值