Ridis01

在苍穹外卖中接触到的一点ridis

目录

介绍

优点

下载安装与启动

数据类型 

常用命令 

字符串操作命令

哈希操作命令 

列表操作命令

集合操作命令 

有序集合操作命令

通用命令

 在java中操作redis

 操作步骤

RedisTemplate操作数据

 字符串String类型

哈希Hash类型


 

介绍

基于内存key-value的结构数据库

优点

  • 基于内存存储,读写性高
  • 适合存储热点数据,也就是访问量大的数据(秒杀商品、资讯...)
  • 它是对mysql的补充,并不会取代mysql

下载安装与启动

解压

 启动:在改目录下启动cmd,然后输入redis-server.exe redis.windows.conf来启动服务,通过ctrl+c结束

 连接本地客户端:redis-cli.exe

 退出客户端:exit

 指定连接的端口号:redis-cli.exe -h localhost -p 端口号 -a 密码

注意要在服务端打开的情况下,重新开一个cmd来进行连接,要不然会出现计算机拒绝

 

修改密码:在配置文件中找到 # requirepass foobared,去掉注释,将foobared改为要设置的密码,这里我设置的是123456

图形化界面:使用Another Redis Desktop Manager 

在图形化界面中,TTL显示过期时间

数据类型 

五种常用数据类型

其中key是字符串类型,value有五种常用的数据类型

keyvalue特点
字符串Strng普通字符串
哈希hash也叫散列,类似于java中的hashMap(适合存储有多个属性的对象)
列表list类似队列,按照插入顺序排序,可以有重复元素,适合存储有顺序的数据
集合set类似HashSet,无序,没有重复元素
有序集合sorted set/zset集合中每个元素关联一个分数score,按照score升序排序,没有重复元素(可以各种排行榜)

常用命令 

字符串操作命令

命令作用
SET key value设置指定Key的value
GET key获取指定key的值
SETEX key seconds value设置key的value,并设置key的过期时间为seconds秒
SETNX key value只有在key不存在时设置key的value

哈希操作命令 

命令作用
HSET key field value设置哈希表Key中字段field的value
HGET key field获取key中指定字段的值
HDEL key field删除存储在哈希表中指定字段
HKEYS key获取哈希表中的所有字段field
HVALS key获取哈希表中所有的value

列表操作命令

命令作用
LPUSH key value1 [value2]将一个或多个值插入到列表头部(a的前面)

LRANGE key start stop

获取列表指定范围内的元素
RPOP key移除并获得列表最后一个元素(d)
LLEN key获取列表长度(4)

集合操作命令 

命令作用
SADD key member1 [member2]向集合添加一个或多个成员

SMEMBERS key

返回集合中的所有成员
SCARE key获取集合中的成员数
SINTER key1 [key2]返回给定所有集合的交集
SUNION key1 [key2]返回所有给定集合的并集
SREM key member1 [member2]删除集合中一个或多个成员

有序集合操作命令

命令作用
ZADD key score1 member1[score2 member2]向有序集合添加一个或多个元素

ZRANGE key start stop [WITHSCORES]

通过索引区间返回有序集合中指定区间的成员
ZINCRBY key increment member有序结合中指定元素的分数+increment
ZREM key member [member]移除有序集合中的一个或多个成员

通用命令

部分数据类型的,每种数据类型都可以使用 

命令作用
KEYS patter查找所有符合给定模式(patter)的key

EXISTS key

检查给定key是否存在
TYPE key返回key所储存的值的类型
DEL key该命令用于在key存在是删除key

 在java中操作redis

redis的java客户端:Spring Data Redis

 操作步骤

  1. 导入Spring Data Redis的maven坐标
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
  2. 配置Redis数据源,在application.yml中,在spring目录下
      redis:
        #当前要连接的redis的ip地址
        host: ${sky.redis.host}
        #端口号
        port: ${sky.redis.port}
        password: ${sky.redis.password}
        #创建时或默认创建16个库,指定使用哪个数据库,这16个库是完全隔离的
        #并不是必须的
        database: {sky.redis.database
  3. 编写配置类,创建RedisTemplate对象,在config包中创建一个RedisConfiguration.class
        @Bean
        public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
            log.info("开始创建redis模板对象");
            RedisTemplate redisTemplate = new RedisTemplate();
            //设置redis的连接工厂对象
            redisTemplate.setConnectionFactory(redisConnectionFactory);
            //设置redis key的序列化器
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            return redisTemplate;
    
        }
  4. 通过RedisTemplate对象操作Redis
    @Autowired
    private RedisTemplate redisTemplate;

RedisTemplate操作数据

 字符串String类型

    public void testString(){
        //set get setex setnx
        redisTemplate.opsForValue().set("city","北京");//set
        String city=(String) redisTemplate.opsForValue().get("city");//get
        System.out.println(city);
        redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);//setex
        redisTemplate.opsForValue().setIfAbsent("lock","1");//setnx
        redisTemplate.opsForValue().setIfAbsent("lock","2");//setnx 同名设置不成功

    }

哈希Hash类型

    public void testHash(){
        //操作命令:hset hget hdel hkeys hvals
        HashOperations hashOperations = redisTemplate.opsForHash();
        //hset
        hashOperations.put("100","name","tom");
        hashOperations.put("100","age","18");

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

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

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

        hashOperations.delete("100","age");//hdel


    }

其他三种数据类型的操作都差不多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值