介绍

分布式缓存
NoSql:解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案。
Redis:键值(Key-Value)存储数据库
Redis是使用c语言开发的一个高性能键值数据库。Redis可以通过一些键值类型来存储数据。
应用场景:
  1. 缓存(数据查询、短连接…)
  2. 任务队列
  3. 临时数据(数据过期处理,比如说:手机验证码2分钟内有效)
数据查询:第一次找DB同时把这个数据存储到缓存中,第二次找redis.[经常使用的热点数据]

数据类型

一. String 类型

赋值语法:SET key value
取值语法: GET key
设置多个键语法: MSET key value [key value …]
获取多个键值语法: MGET key [key …]
删除语法:DEL key
 
递增数字:当存储的字符串是整数时,Redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值。
递增数字语法: INCR key
递减数值语法: DECR key
增加指定的整数语法: INCRBY key increment
减少指定的整数 语法:DECRBY key decrement
  @Test
     public void testString(){
         JedisPool jedisPool = new JedisPool("192.168.56.128",6379);
         Jedis jedis = jedisPool.getResource();
         /*设置单个kv*/
         jedis.set("1","你好");
         System.out.println(jedis.get("1"));

         /*设置多个kv*/
         jedis.mset("1","你好","2","不好");
         System.out.println(jedis.mget("1","2"));

         /*删除k*/
         System.out.println(jedis.del("1"));
         System.out.println(jedis.get("1"));//null

         /*字符串递增*/
         jedis.incr("num");
         System.out.println(jedis.get("num")); //1  2  3 ....

         /*递增固定数*/
         jedis.incrBy("num2",4);
         System.out.println(jedis.get("num2"));//4  8 12 ...

         /*字符串递减*/
         jedis.decr("num3");
         System.out.println(jedis.get("num3"));// -1  -2 -3 ...

         /*递减固定数*/
         jedis.decrBy("num4",4);
         System.out.println(jedis.get("num4"));//-4   -8 ...
     }

二、List集合

Redis的list是采用来链表来存储,双向链表存储数据,特点:增删快、查询慢(Linkedlist)
向列表左边增加元素: LPUSH key value [value ...]
从列表左边弹出元素: LPOP key
向列表右边增加元素 : RPUSH key value [value ...]
从列表右边弹出元素: RPOP key
获取列表中元素的个数: LLEN key
查看列表语法:LRANGE key start stop

  @Test
     public void testList(){
         JedisPool jedisPool = new JedisPool("192.168.56.128",6379);
         Jedis jedis = jedisPool.getResource();

         jedis.flushDB();

         /*从左侧增加*/
         jedis.lpush("list1","11","22","33");

         /*从右侧取*/
         System.out.println(jedis.rpop("list1"));// 11  右侧第一个(当前集合顺序[hahaha,gg,haha],取出就没了)
         /*从左侧取*/
         System.out.println(jedis.lpop("list1"));

         /*查看集合 lrange*/
         System.out.println(jedis.lrange("list1",0,-1));//[22]添加flushDB(),执行该测试方法多次,集合元素唯一,否则重复

         System.out.println(jedis.llen("list1"));
     }

三、Set集合

Set集合类型:无序、不可重复
增加元素语法:SADD key member [member ...]
删除元素语法: SREM key member [member ...]
获得集合中的所有元素 : SMEMBERS key
判断元素是否在集合中: SISMEMBER key member
存与取:无序不可重复
 @Test
    public void testSet() {
        JedisPool jedisPool = new JedisPool("192.168.56.128", 6379);
        Jedis jedis = jedisPool.getResource();

        /*添加元素*/
        jedis.sadd("set1", "1", "2", "3", "3");
        jedis.sadd("set2", "2", "4", "5");

        /*得到集合*/
        System.out.println(jedis.smembers("set1"));// [1,2,3]

        /*元素是否在集合中*/
        System.out.println(jedis.sismember("set1", "1"));//true

        /*取交集*/
        System.out.println(jedis.sinter("set1", "set2"));// [2]

        /*取并集*/
        System.out.println(jedis.sunion("set1", "set2"));//[1,2,3,4,5]

        /*差集*/
        System.out.println(jedis.sdiff("set1", "set2"));//[1,3]

    }

四、SortSet有序集合(Zset)

Sortedset和set的不同之处,是会给set中的元素添加一个分数,然后通过这个分数进行排序。
增加元素:ZADD key score member [score member ...]

向有序集合中加入一个元素和该元素的分数(score),如果该元素已经存在则会用新的分数替换原有的分数。

获得排名在某个范围的元素列表
按照元素分数从大到小的顺序返回
语法:ZREVRANGE key start stop [WITHSCORES]
获取元素的分数 :ZSCORE key member
删除元素ZREM key member [member ...]
获得元素的分数的可以在命令尾部加上WITHSCORES参数
  @Test
     public void testZSet(){
         JedisPool jedisPool = new JedisPool("192.168.56.128", 6379);
         Jedis jedis = jedisPool.getResource();
         Map<String,Double> map = new HashMap<>();
         map.put("zhangsan",1d);
         map.put("lisi",3d);
         map.put("wangwu",2d);

         /*添加*/
         jedis.zadd("score",map);

         /*所有数据 有序*/
         System.out.println(jedis.zrange("score",0,-1));//[zhangsan, wangwu, lisi]

         /*获取元素的分数*/
         System.out.println(jedis.zscore("score","zhangsan")); //1.0

         /*lisi排名*/
         System.out.println(jedis.zrank("score","lisi"));// 2   (默认从零开始)            /*删除*/      System.out.println(jedis.zrem("score","wangwu"));
  }

    

五、Hash散列

hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。
赋值语法: HSET key field value

设置一个字段值, HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。

取值语法: HGET key field
设置多个字段语法: HMSET key field value [field value ...]
取多个值语法: HMGET key field [field ...]
获取所有字段值语法:HGETALL key
删除字段语法:HDEL key field [field ...]
     @Test
     public void testHash(){
         JedisPool jedisPool = new JedisPool("192.168.56.128", 6379);
         Jedis jedis = jedisPool.getResource();

         Map<String,String> map = new HashMap<>();
         map.put("1","zhangsan");
         map.put("2","lisi");
         map.put("3","wangwu");

         /*单个添加*/
         jedis.hset("stu1","name","zhaoliu");
         jedis.hset("stu1","age","20");

         /*添加集合*/
         jedis.hmset("stu2",map);

         /*输出*/
         System.out.println(jedis.hgetAll("stu2"));// {1=zhangsan, 2=lisi, 3=wangwu}

         /*取值*/
         System.out.println(jedis.hget("stu1","name"));//zhaoliu

         /*取所有值*/
         System.out.println(jedis.hgetAll("stu1"));//{name=zhaoliu, age=20}

         /*得到keys*/
         System.out.println(jedis.hkeys("stu1"));//[name, age]

         /*得到values*/
         System.out.println(jedis.hvals("stu1"));//[zhaoliu, 20]
     }

其他

keys:返回满足给定pattern 的所有key
 
exists:确认一个key 是否存在,存在返回1
 
del:删除一个key
 
rename:重命名key:rename age age_new
 
type:返回值的类型
 
设置失效时间: expire key  3;    
 
查看剩余秒数:ttl key
 
取消过期时间:persist
 
redis默认有16个数据库,库名db0 - db15,默认使用db0
 
选择数据库:select   [0-15]
 
把0库数据迁移到1库:move  xxx    1(原数据库数据没了)
 
查看key的类型:type key
 
查看数据库大小:dbsize
 
清空数据库:flushdb(清空当前) flushall(所有数据库都清空) 
 
随机返回一个key: randomkey
 
打印:echo     (echo   xxxx)
 
数据库中key数量:dbsize
 
数据库详细信息: info
 
实时存储收到的请求: config get      config  get *   返回所有相关的配置信息

Redis简单介绍与数据类型的更多相关文章

  1. Redis简单介绍以及数据类型存储

    因为我们在大型互联网项目其中.用户訪问量比較大,比較多.会产生并发问题,对于此.我们该怎样解决呢.Redis横空出世,首先,我们来简单的认识一下Redis.具体介绍例如以下所看到的: Redis是一个 ...

  2. Redis简单介绍

    redis简单介绍 Redis VS key-value缓存产品 Redis支持数据的持久化,能够将内存中的数据保持在磁盘中,重新启动的时候能够再次载入进行使用. Redis不只支持简单的key-va ...

  3. Python redis 简单介绍

    Python redis 简单介绍 1.安装 终端输入: pip(or)pip3.6 install redis 安装成功 2.哈哈,发现我并没有redis服务可以访问,所以到这里,在本机安装了red ...

  4. [freemarker篇]04.简单介绍-基本数据类型

    好几天没有更新博客了,最近一顿乱七八糟的忙!今天简单更新第四章,这里只能说是简单介绍,因为权威的还是需要看Freemarker的官方中文手册! 好几天没有更新博客了,最近一顿乱七八糟的忙!今天简单更新 ...

  5. Redis 简单介绍(知识整理笔记)

    前言: Redis 介绍:轻量级.Key-Value.内存数据库.支持持久化 Redis 数据结构:string(字符串),hash(哈希),list(列表),set(集合)及 zset (sorte ...

  6. Redis简单介绍与安装

    Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis有三个主要特点,使它优越于其它键值数据存储系统 - 1) Redis将其数据库完全保存在内 ...

  7. Redis实战——简单介绍

    出自:https://www.cnblogs.com/moonlightL/p/7364107.html Redis简单介绍 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能, ...

  8. redis学习(一) redis的介绍与安装

    redis简单介绍 redis全称remote-dictionary-server 直译为远程字典服务器, 是一个高性能的key-value存储系统,也被称为数据结构服务器,因为其所存储的数据值(va ...

  9. 01-Redis 简单介绍

    Redis 简单介绍 1.Redis 是什么 Redis 是一种基于键值对的 NoSQL 数据库,与很多键值对数据库不同, redis 中的值可以有 string, hash , list , set ...

随机推荐

  1. PMP项目管理

    http://blog.sina.com.cn/s/blog_a3922d430102wv38.html https://www.zhihu.com/question/19882243 最近学习pmp ...

  2. 关于Ubuntu16.04下phpmyadmin出现mbstring错误的正解

    1.打开终端,输入php -i | grep extension_dir 查看extension_dir的绝对路径 2.查看phpinfo,php.ini的绝对路径 3.打开php.ini文件. 设置 ...

  3. [翻译] JSAnimatedImagesView

    JSAnimatedImagesView 本人测试的效果: Description:描述 Easy to use UIView subclass to quickly add a cool anima ...

  4. Mysql学习---索引的学习 180101

    索引:约束 + 快速查找 索引是数据库中用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可. 问:为什么索引可以这么快?[类似 ...

  5. c# 内存泄漏检查心得

    系统环境 windows 7 x64 检查工具:ANTS Memory Profiler 7 或者 .NET Memory Profiler 4.0 开发的软件为winform / windows s ...

  6. Asp.Net MVC 开发技巧(二)

    Linq查询 Linq的使用大体分为两种:语句表达式   和  方法 首先,我们要在控制器中定义好context private ApplicationDbContext db = new Appli ...

  7. redis缓存机制【转载】

    转载自:http://blog.csdn.net/acmman/article/details/53434134 redis的主从模式(1)介绍redis存储数据是在内存中运行的,运行速度比关系型数据 ...

  8. 随手练——大量级阶乘 - HDU-2674 N!Again

     N!Again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. 【jQuery】结合accordion插件分析写插件的方法及注意事项

    1.jQuery插件的命名方式:jquery.[插件名].js 2.对象方法附加在jQuery.fn上,全局函数附加在jQuery对象本身上 3.插件内部this指向的是通过选择器获取的jQuery对 ...

  10. 《metasploit渗透测试魔鬼训练营》学习笔记第九章--meterpreter

    七.强大的meterpreter  7.1再探metasploit的攻击载荷模块     7.1.1典型的攻击载荷模块     metasploit涵盖了各大主流操作系统和平台,其中绝大部分是远程漏洞 ...