继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

NoSQL数据库之-------Redis(一)

霜花似雪
关注TA
已关注
手记 163
粉丝 1.5万
获赞 8507

Redis数据库简介:
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
1.性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
2.丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
3.原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
4.丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
下载地址:https://github.com/MSOpenTech/redis/releases
安装教程:http://www.runoob.com/redis/redis-install.html
数据类型:
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
(一)String(字符串):
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
(二)Hash(哈希):
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
(三)List(列表):
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
(四)Set(集合):
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
(五)zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。

下面是Java操作redis数据库实例:
我创建的项目是Maven项目,所以Maven项目下的pom.xml配置为:

<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>redis1</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>1.0.2</version>
        </dependency>
        <!-- <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.7.3</version>
        </dependency> -->

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.7</version>
        </dependency>

        <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.10</version>
               <scope>test</scope>
        </dependency>
    </dependencies>
</project>
package com.redis;

import java.util.Iterator;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;

import org.redisson.Config;
import org.redisson.Redisson;

/**
 * 连接redis服务器、保存读取concurrentMap对象、保存读取set对象和保存读取Queue对象
 * @author dell
 *
 */
public class RedisExample {
    public static void main(String[] args) {
        //初始化
        Config config = new Config();
        config.setConnectionPoolSize(10);
        config.addAddress("127.0.0.1:6379");
        Redisson redisson = Redisson.create(config);
        System.out.println("redis连接成功!");

        //1.测试concurrentMap,put方法的时候就会同步到redis中
        ConcurrentMap<String,Object> map = redisson.getMap("FirstMap");
        map.put("liuhefei", "男");
        map.put("xuyi","女");
        map.put("yuyun","女");

        ConcurrentMap resultMap =redisson.getMap("FirstMap");
        System.out.println("resultMap=" + resultMap.keySet());

        //2.测试set集合
        Set mySet = redisson.getSet("MySet");
        mySet.add("霜花似雪");
        mySet.add("美女");
        mySet.add("帅哥");

        Set resultSet = redisson.getSet("MySet");
        Iterator<String> it = resultSet.iterator();
        while(it.hasNext()){
            String str = it.next();
            System.out.print(str+" ");
        }
        System.out.println("\n resultSet=" + resultSet.iterator());
        System.out.println("resultSet=" + resultSet.size());

        //3。测试Queue队列
        Queue myQueue = redisson.getQueue("FirstQueue");
        myQueue.add("北京");
        myQueue.add("shanghai");
        myQueue.add("kunming");
        myQueue.peek();
        myQueue.poll();

        Queue resultQueue = redisson.getQueue("FirstQueue");
        System.out.println("resultQueue= " + resultQueue);

        //Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。 

        //关闭连接
        redisson.shutdown();

    }

}

结果:
图片描述
可视化工具中:
图片描述
redis可视化客户端下载地址:https://redisdesktop.com/download

更多精彩内容下次分享!感谢您的支持!

打开App,阅读手记
19人推荐
发表评论
随时随地看视频慕课网APP