Redis入门

Redis

Redis(Remote Dictionary Server ),即远程字典服务

1先解压redis安装包

tar -zxvf redis-6.0.9.tar.gz

2先安装c++运行环境(redis是用c语言写的)

yum install gcc-c++

进入解压后的redis目录

make  #进行编译(对应redis目录下的makefile文件)
make install #(低版本的gcc可能会报错)进行安装

可升级gcc的版本
在这里插入图片描述3.redis默认被安装在/usr/local/bin目录下
在这里插入图片描述默认安装后的文件有五个 其中
redis-server: 表示redis服务端 在当前目录下 ./redis-server 可打开默认配置的服务
在这里插入图片描述redis-cli: 表示redis客户端 ./redis-cli -h localhost -p 6379 可连接redis服务端
./redis-cli -h localhost -p 6379 --raw 这样存储中文终端可以显示中文
4.指定配置文件方式让server启动
cd /opt/redis-6.0.9 进入解压后的源码文件
cp redis.conf /usr/local/bin 复制配置文件到redis安装目录在这里插入图片描述然后指定配置文件方式启动redis服务 可以修改配置文件进而修改默认配置

./redis-server redis.conf

5.可编辑默认redis.conf配置文件

vim redis.conf

修改默认端口号:
在这里插入图片描述允许远程访问
在这里插入图片描述将bind 127.0.0.1 改成 0.0.0.0
6.redis中库的概念
默认有16个数据库(如果不满意可以到redis.conf下修改):
在这里插入图片描述库的编号0-15 默认使用0号库
切换数据库命令: select dbid(0-15)
在这里插入图片描述7.redis基本命令
select dbid(0-15) 切换数据库
set key value 储存某个键值对
get key 获取某个键的值
在这里插入图片描述keys * 查看所有的键
在这里插入图片描述flushdb 清除当前库的数据
Flushall 清空所有库的数据
del key1 key2 删除指定的键值对,可以同时删除多个

exists key 判断键是否存在
expire age 5 给某个存在的键加有效时间
ttl key 查看某个key的有效时间 返回-1代表永久 -2代表已过期 正数代表 有效时间
rename key key1 为某个key改名值不变
type key 显示某个键的值的类型
8.操作string类型
在这里插入图片描述9.操作list类型
在这里插入图片描述在这里插入图片描述10.操作set类型
在这里插入图片描述11.hash类型
key(string) value(map)
在这里插入图片描述2.操作命令
hset KEY key value eg: hset map1 name zhangsan 存值
hget KEY key eg: hget map1 name 取值
hgetall key eg: hgetall map1 遍历map集合中的所有值
hdel KEY key eg: hdel map1 name 删除某个map集合中的某个值

在这里插入图片描述
12.持久化机制
1.快照持久化
默认情况自动开启快照rdb方式
在这里插入图片描述2.AOF持久化
需要改配置文件才能开启AOF持久化
在这里插入图片描述在这里插入图片描述修改配置文件
在这里插入图片描述*当快照(rdb)模式与AOF模式同时开启时 系统默认选择AOF模式

**

13.java操作redis

1.java操作redis原生写法
jredis …

2.springboot整合redis
1.pom文件下添加依赖

<!--引入依赖 spring data redis依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2.Springboot配置文件下

###################### redis配置  #####################
spring.redis.host=192.168.198.133
spring.redis.port=6379
#指定操作那个数据库
spring.redis.database=0  

3.springboot项目启动后工厂中会自动加载两个对象 redisTemolate 与 stringRedisTemplate
4.操作redis中的key

/**
 *  操作redis中key相关的
 */
@Test
public void testKey(){
    stringRedisTemplate.delete("name"); // 删除一个key

    Boolean hasname = stringRedisTemplate.hasKey("name");// 判断某个key是否 存在
    System.out.println(hasname);

    Set<String> keys = stringRedisTemplate.keys("*"); // 获取redis中的所有key
    System.out.println(keys);

    Long time = stringRedisTemplate.getExpire("name"); // 获取key的超时时间 返回-1永不超时 -2表示key不存在 正数表示有效时间
    System.out.println(time);

    String randomKey = stringRedisTemplate.randomKey(); // 随机的获取redis中的key
    System.out.println(randomKey);

    // stringRedisTemplate.rename("name","name1"); // 为key改名 如果redis中没有那个key值就会

    stringRedisTemplate.move("age",1); // 移动key到指定库

}

5.操作redis中的string类型

/**
 *  操作redis中的字符串  opsForValue 实际操作的是redis中的String类型
 */
@Test
public void testString() {
    stringRedisTemplate.opsForValue().set("name","coderzpw");  // 简单的设置一个key value
    stringRedisTemplate.opsForValue().set("game","王者荣耀",120, TimeUnit.SECONDS); // 设置一个key 超时时间
    System.out.println(stringRedisTemplate.opsForValue().get("name"));
    stringRedisTemplate.opsForValue().append("name","是一个好人"); // 追加
    System.out.println(stringRedisTemplate.opsForValue().get("name"));

    stringRedisTemplate.opsForValue().decrement("num");  // 让某个数字自减   强调必须是数字类型
    stringRedisTemplate.opsForValue().increment("num");  // 让某个数字自增   强调必须是数字类型
}

6.操作redis中的list类型

/**
 *  操作redis中的list类型 opsForList实际就是操作redis的list类型
 */

@Test
public void testList(){
    stringRedisTemplate.opsForList().leftPush("names","coderzpw"); // 创建一个列表  并放入一个元素
    stringRedisTemplate.opsForList().leftPushAll("names","小张","小陈","小李");  // 创建一个列表 放入多个元素

    ArrayList<String> ns = new ArrayList<>();
    ns.add("1");
    ns.add("2");
    ns.add("3");
    stringRedisTemplate.opsForList().leftPushAll("nums", ns);// 创建一个列表放入一个集合
    List<String> nums = stringRedisTemplate.opsForList().range("nums", 0, -1);// 遍历某个集合列表 获取值
    nums.forEach(v-> System.out.println(v));

7.操作redis中的hash类型

/**
 *  操作redis中的hash类型 opsForHash 实际操作的就是redis中的hash类型
 */
@Test
public void testHash(){
    stringRedisTemplate.opsForHash().put("maps","name","张三");  // 创建一个hash类型  并放入key value

    HashMap<String, String> map1 = new HashMap<>();
    map1.put("age","21");
    map1.put("bir","1999-12-17");
    stringRedisTemplate.opsForHash().putAll("maps2",map1);  // 创建一个hash类型 一次性放入多个键值对 参数放入一个map集合

    stringRedisTemplate.opsForHash().get("maps","name");  // 获取hash中某个key的值
    stringRedisTemplate.opsForHash().values("maps");  // 获取所有的value
    stringRedisTemplate.opsForHash().keys("maps");  // 获取所有的key
}
  1. redis操作对象
    在这里插入图片描述
**
 *  redis存储对象
 */
@Test
public void testObject(){  // 要存储的对象首先要实现序列化
    /**
     *  redisTemplate 对象中 key 和 value 的序列化方式的是JdkSerializationRedisSerializer
     *  key:String
     *  value:Object
     *  修改默认key序列化方案 : key  StringRedisSerializer
     */
    // 修改key的序列化方式 String类型序列化
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    // 修改hash key的序列化方案
    redisTemplate.setHashKeySerializer(new StringRedisSerializer());

    User user = new User();
    user.setId(1);
    user.setName("张三");
    user.setAge(21);
    redisTemplate.opsForValue().set("user1",user);
    System.out.println(redisTemplate.opsForValue().get("user1"));
}

9 当一个key操作多次 我们可以通过绑定操作来简化

/**
 *  spring data 为了方便我们对redis进行更好的操作 提供了bound api 简化操作
 */
@Test
public void testBound(){
    // redisTemplate stringRedisTemplate 讲一个key多次操作进行绑定 对key绑定
    /* 1 这种操作比较麻烦 */
    stringRedisTemplate.opsForValue().set("name1","coderzpw");
    stringRedisTemplate.opsForValue().append("name1","是个好人");
    String s = stringRedisTemplate.opsForValue().get("name1");
    System.out.println(s);

    /* 对字符串类型key进行绑定 后续所有操作都是基于这个key的操作 */
    BoundValueOperations<String, String> name2ValueOperations = stringRedisTemplate.boundValueOps("name2");
    name2ValueOperations.set("小虎牙");
    name2ValueOperations.append("是个好人");
    String s1 = name2ValueOperations.get();
    System.out.println(s1);

}

Redis应用场景

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

coderzpw

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

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

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

打赏作者

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

抵扣说明:

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

余额充值