Redis的基础知识·

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

  • 基于内存存储 读写性能高
  • 适合存储热点数据(热点商品 咨询 新闻)

开启Redis

首先输入命令

复制代码
redis-server.exe redis.windows.conf

然后重新打开命令行窗口

输入命令

复制代码
redis-cli.exe

输入密码

复制代码
redis-cli.exe -a 123456

五种常用的数据类型

  • 字符串String :普通字符串 redis中最常用的数据类型

  • 哈希表 hash:也叫散列

  • 列表 list :按照插入的顺序进行排序 可以有重复的数据类似于LinkedList

  • 集合 set:无序集合 没有重复元素 类似于HashSetji

  • 有序集合 sorted set/zset :集合中每个元素关联一个分数(score) 根据分数升序排列 没有重复元素
    Redis中的常见操作字符串的命令

  • SET key value 设置指定的key的值

  • GET key 获取指定key的值

  • SETEX key seconds value 设置指定key的值 并将key的过去时间设置为seconds秒

  • SETNX key value 只有在key不存在时才会设置key的值
    Redis中常见的hash操作命令

Redis hash是一个string类型的filed和value的映射表 hash特别适合存储对象 常用命令

HSET key field value 将哈希表key中的字段field的值设置为value

HGET key field 获取存储在哈希表中的指定字段的值

HDEL key field 删除存储在哈希表中的指定字段

HKEYS key 获取哈希表中的所有字段

HVALS key 获取哈希表中的所有值
Redis中常见的列表操作命令

Redis列表是简单的字符串列表 按照插入顺序排序 常用命令

LPUSH key value1value2 将一个或者多个值插入到列表的头部(每个元素用空格隔开)

LRANGE key start stop 获取列表指定范围内的元素

RPOP key 移除并获取列表的最后一个元素

LLEN key 获取列表长度
Redis中常见的集合常见操作命令

Redis set 是string类型的无序集合 集合成员是唯一的,集合中不能出现重复的数据 常用命令

SADD key member1 member2 向集合中添加一个或者多个成员

SMEMBERS key 返回集合中的所有成员

SCARD key 获取集合的成员数

SINTER key1 key2 返回给定所有集合的交集

SUNION key1 key2 返回所有给定集合的并集

SREM key member1 member2删除集合中一个或者多个成员
Redis中常见的有序集合操作命令

Redis有序集合是string类型元素的集合 且不允许有重复的成员 每个元素都会关联一个double类型的分数,常用命令

ZADD key score1 member1 score2 member2

ZRANGE key start stop WITHSCORES通过索引区间返回有序集合中指定区间内的成员

ZINCRBY key increment member 有序集合中指定的成员分数加上增量increment

ZREM key member1member2 移除有序集合中的一个或者多个成员
Redis通用命令(部分数据类型)

KEYS pattern 查找所有符合给定模式(pattern)的key

EXISTS key 检查给定key是否存在

TYPE key 返回key所存储的值的类型

DEL key 该命令用于key存在时删除key
Java中操作Redis

1.导入Redis的依赖(以起步依赖为例)

复制代码
<!--导入redis相关依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2.配置Redis的配置源

java 复制代码
  #配置spring------redis
  redis:
    host: ${sky.redis.host}
    password: ${sky.redis.password}
    port: ${sky.redis.port}
    database: ${sky.redis.database}

3.书写Redis的配置类来操作Redis

java 复制代码
package com.sky.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
@Slf4j
public class RedisConfiguration {

	@Bean
	public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
		log.info("开始创建RedisTemplate对象...");
		RedisTemplate redisTemplate = new RedisTemplate();
		//设置Redis的连接工厂对象
		redisTemplate.setConnectionFactory(redisConnectionFactory);
		//设置Redis的序列化器
		redisTemplate.setKeySerializer(new StringRedisSerializer());
		return redisTemplate;
	}
}

java代码操作Redis中String类型的数

java 复制代码
@Test
	public void testString() {
		//set get setex setnx
		redisTemplate.opsForValue().set("city", "beijing");
		String s = (String) redisTemplate.opsForValue().get("city");
		System.out.println(s);
		redisTemplate.opsForValue().set("code", "123", 60, TimeUnit.MINUTES);
		redisTemplate.opsForValue().setIfAbsent("lock","1") ;
		redisTemplate.opsForValue().setIfAbsent("lock","2") ;

	}

Java代码中操作hash类型的数据

java 复制代码
@Test
	public void testHash() {
		//hset hget hdel hkeys hvals
		HashOperations hashOperations = redisTemplate.opsForHash();

		hashOperations.put("100", "name", "xiaoming");
		hashOperations.put("100", "age", 20);

		String name = (String) hashOperations.get("100", "name");
		System.out.println(name);

		Set keys = hashOperations.keys("100");
		System.out.println(keys);

		List values = hashOperations.values("100");
		System.out.println(values);

		hashOperations.delete("100", "name") ;


	}
相关推荐
不像程序员的程序媛1 小时前
系统cpu内存负载资源分析
运维·服务器·数据库
Jane Chiu2 小时前
Oracle DBMS_REDEFINITION(在线重定义)
数据库·oracle·分区表
全栈前端老曹2 小时前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl
怕孤单的草丛3 小时前
缓存管理面临的主要问题
java·数据库·缓存
我会尽全力 乐观而坚强3 小时前
MySQL零基础入门(二)
数据库·mysql·adb
kali-Myon4 小时前
某校园门禁系统高危 SQL 注入漏洞挖掘复盘
数据库·sql·安全·web安全
程序员在囧途6 小时前
likeadmin-api API 中转站怎么做统一报价?从 /pricing、/user/balance 到 task_id 回执的落地方法
运维·服务器·数据库·likeadmin-api·api中转站·token计费
龙石数据6 小时前
MySQL 全量同步到 Hive 怎么做?三步配置教程
数据库·hive·mysql·数据治理·数据中台
程序员在囧途7 小时前
likeadmin-api API 算力超市怎么做供应商切换?统一鉴权、task_id 和 callback_url 才能稳交付
java·服务器·数据库·开放api·likeadmin-api·api算力超市