zoukankan      html  css  js  c++  java
  • 整合 Redis 缓冲

    关系型数据库
       常见的关系型数据库有:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL。
     其优点有:
    容易理解  
    使用方便 
    易于维护  
    支持 SQL,可用于复杂的查询。 
    其缺点有:
    为了维护一致性所付出的巨大代价就是其读写性能比较差。
    固定的表结构。
    高并发读写需求。 
    海量数据的高效率读写。
    非关系型数据库 
    常见的非关系型数据库有:NoSql、Cloudant、MongoDB、redis、HBase。
    其优点有:
    格式灵活
    速度快
    高扩展性。 
    成本低
    其缺点有:
    数据和数据之间没有关系,所以不能一目了然。  
    没有关系,没有强大的事务保证数据的完整和安全。 非关系型数据库的分类
    Redis 简介
        Redis 是一个基于内存的单线程高性能 key-value 型数据库。整个数据库统统加载在内存 当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操 作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value 数据库。
          Redis 可以存储键和 5 种不同类型的值之间的映射。键的类型只能为字符串,值支持 5 种数据类型:string(字符串)、list(列表)、set(集合)、hash(哈希类型)、Sorted Set 有序集合。
    Redis 的安装
    在 Redis 官方是没有支持 Windows 系统的,但是微软自己做了一个支持 win64 位系统 的,所以我们可以在网络上下载 Windows 版本,下载地址: https://github.com/MicrosoftArchive/redis/releases。
    进步网址后,不要选择 Pre-release(測试版)。选择 Latest Release(稳定版)下载 Redis 安装 包

    将下载的压缩包解压到一个文件夹中,双击【redis-server.exe】,Redis服务就运行起来了
    Redis 的多数据库
     Redis 默认支持 16 个数据库,这些数据库的默认命名都是从 0 开始递增的数字。 当我们连接 Redis 服务时,默认操作的是 0 号数据库,可以通过 SELECT 命令更换数据 库

    可以通过配置文件中的databases来修改默认数据库个数

    对字符串(string)的操作 
     在 Redis 数据库中对字符串的增删改查操作
    
    set name beixi     //添加
    
    get name              //查看values
    
    keys                //查看所有key
    
    set name beixi ex 10 //设置过期时间
    
    get name
    
    set name jzj         //更新name的值为jzj
    
    get name
    
    del name              //删除
    
    keys*
    对 List 集合的操作
     在 Redis 数据库中对 List 集合的增删改查操作
    
    //头部插入key为 my_list,value 为'C++’'java' 'web'的list集合
        127.0.0.1:6379> 1push my list 'C++''java' 'web'
        (integer) 3
        127.0.0.1:6379> lrange my_list 0 -1        //查询集合
        1)"web"
        2)"java"
        3)"C++"
        127.0.0.1:6379> rpush my list "python "    //尾部添加
        (integer)4
        127.0.0.1:6379>lpush my_list "ceshi'       //头部添加
        (integer) 5
        127.o.o.1 :6379>lrange my list 0 -1        //查询集合
        1) "ceshi"
        2)"web"
        3) "java"
        4)"C++”
        5)"python"
        
    127.0.0.1:6379> lset my list 0'u主'        //更新index 为0的值
        OK
        127.0.0.1:6379> lrange my list 0-1
        1)"ui"
        2) "web"
        3)"java"
        4)"C++"
        5)"python"
        127.0.0.1 :6379> lrem my list 0 'ui'       //删除index为0的值
        (integer) 1
        127.0.o.1:6379> lrange my list 0 -1
        1)"web"
        2)"java"
        3)"C++"
        4)"python"
        127.0.0.1:6379>
    对 set 集合的操作 
    set 是无序的集合,其中的元素没有先后顺序。set 集合的操作如下所示:
    
     127.0.0.1:6379> sadd my_set java c++ python   //添加元素,会自动去重
        (integer) 3
        127.0.0.1:6379> smembers my_set               //查询元素
        1) "python"
        2) "c++"
        3) "java"
        127.0.0.1:6379> srem my_set c++               //移除元素
        (integer) 1
        127.0.0.1 : 6379> scard my_set                //查询集合中的元素个数
        (integer) 2
        127.0.0.1:6379> smembers my_set
        1) "python"
        2)"java"
        
    127.0.0.1:6379> sadd my_set2c++ python
        (integer)2
        127.0.0.1:6379> sunion my_set my_set2         //获取多个集合的并集
        1)"python"
        2) "c十+"
        3)"java"
        127.0.0.1:6379> sinter my_set my_set2         //获取多个集合的交集
        1)"python"
        127.0.0 .1:6379>
    对 Hash 集合的操作 
    在 Redis 数据库中对 Hash 集合的增删改查操作,如下所示:
        //添加key 为 my hset,字段为name ,值为jzj
        127.o.o.i:6379> hset my_hset name jzj
        (integer) 1
        //在key为my hset 的哈希集中添加字段2
        127.0.0.1:6379> hset my_hset name2 jzj2
        (integer) 1
        //查询my hset字段长度
        127.0.0.1 :6379> hlen my_hset
        (integer) 2
        //查询所有字段
        127.0.0.1:6379> hkeys my_hset
        1) "name"
        2)"name2"
        //查询所有值
        127.0.0.1:6379> hvals my hset
        1)"jzi”
        2)"jzj2"
        
    //查询宇段name 的值
        127.0.0.1:6379> hget my hset name
        "jzj"
        //获取key为my hset的哈希集的所有字段和值
        127.0.0.1:6379> hgetall my hset 
        1)"name"
        2)"jzj”
        3) "name2 "
        4)"jzj2"
        //更新字段name 的值为new jzj
        127.0.o.1:6379> hset my hset name new jzi
        (integer) o
        //获取key为my hset的哈希集的所有字段和值
        127.0.0.1:6379> hgetall my_hset
        1) "name"
        2)"new izj"
        3) "name2"
        4)"jzj2”
      
      //删除字段name 的值
        127.0.0.1:6379> hdel my_hset name
        (integer) 1
        127.0.0.1:6379> hgetall my hset
        1)"name2"
        2)"jzj2"
        127.0.0.1:6379>
    对 zset 的操作 
    zset 是一种有序集合(sorted set),其中每个元素都关联一个序号 score。对 zset 的操作
    
     //添加baidu .com元素,分数为1
        127.0.o .1 :6379> zadd my_zset 1 'baidu . com '
        (integer) 1
        //添加taobao.com元素,分数为2
        127.0.0.1:6379> zadd my_zset 2 'taobao .com '
        (integer) 1
        //添加qq.com元素,分数为3
        127.0.0.1:6379> zadd my_zset 3 'qq.com'
        (integer) 1
        //按照分数由小到大查询my_zset集合的元素127.0.0.1:6379> zrange my_zset 0 -1
        1)"baidu . com"
        2)"taobao.com"
        3)"qq.com"
        
    //按照分数由大到小查询my_zset集合的元素
        127.0.0 . 1 :6379> zrevrange my_zset 0 -1
        1) "qq. com"
        2)"taobao.com"
        3)"baidu.com"
        //查询元素'baidu.com'的分数值
        127.0.0.1:6379>zscore my_zset 'baidu .com '
        "1"
        //查询元素'qq.com'的分数值
        127.0.0.1:6379> zscore my_zset 'qq.com'
        " 3 "
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.redis</groupId>
        <artifactId>redis</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
            <relativePath /> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <!-- 声明项目配置依赖编码格式为 utf-8 -->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <fastjson.version>1.2.24</fastjson.version>
        </properties>
    
        <dependencies>
            <!--Redis相关依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
            <!--Lettuce pool缓冲连接池 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-pool2</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    spring.redis.database=0  
    spring.redis.host=localhost
    spring.redis.port=6379  
    spring.redis.password=
    spring.redis.lettuce.pool.max-active=8  
    spring.redis.lettuce.pool.max-wait=-1ms
    spring.redis.lettuce.pool.max-idle=8 
    spring.redis.pool.min-idle=0  
    package com.tszr.redis.City;
    
    import java.io.Serializable;
    
    public class City implements Serializable {
        private static final long serialVersionUID = 1L;
        private int id;
        private String name;
        private String country;
    
        public City(int id, String name, String country) {
            this.id = id;
            this.name = name;
            this.country = country;
        }
    
        @Override
        public String toString() {
            return "City{" + "id=" + id + ", name='" + name + '\'' + ", country='" + country + '\'' + '}';
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getCountry() {
            return country;
        }
    
        public void setCountry(String country) {
            this.country = country;
        }
    }
    package com.tszr.redis.controller;
    
    import com.tszr.redis.City.City;
    
    import javax.annotation.Resource;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.data.redis.core.ValueOperations;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class CityController {
        @Resource
        private RedisTemplate<String, City> redisTemplate;
    
        @Autowired
        private StringRedisTemplate stringRedisTemplate;
    
        @GetMapping("/")
        public void testRedis() {
            ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
            // 添加字符串
            ops.set("name", "beixi");
            String name = ops.get("name");
            System.out.println(name);
            ValueOperations<String, City> opsForValue = redisTemplate.opsForValue();
            City city = new City(1, "北京", "中国");
            // 添加实体类
            opsForValue.set("city", city);
            Boolean exists = redisTemplate.hasKey("city");
            System.out.println("redis是否存在相应的key:" + exists);
            // 删除
            redisTemplate.delete("city");
            // 更新
            redisTemplate.opsForValue().set("city", new City(2, "山西", "中国"));
            // 查询
            City c2 = (City) redisTemplate.opsForValue().get("city");
            System.out.println("从redis数据库中获取city:" + c2.toString());
        }
    }
    package com.tszr.redis;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }

  • 相关阅读:
    nginx中root和alias的区别
    linux修改服务时间
    nginx.conf属性
    mybatis批量操作
    linux查看日志关键字搜索
    项目启动报错Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException
    springboot打包忽略Test
    mybatis文档
    On Java 8
    zabbix如何修改web字体
  • 原文地址:https://www.cnblogs.com/tszr/p/15450037.html
Copyright © 2011-2022 走看看