A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈思亮 初级黑马   /  2019-3-28 13:42  /  574 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



1 、redis 概述

redis是一款高性能的非关系型数据库

        NOSQL非关系型数据库:数据之间没有关联关系,数据存储在内存中。相比于关系数据库的又=优势 和缺点:

优点:

            1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
            2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
            3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
            4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
   

缺点:

            1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
            2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。
                                         3)不提供关系型数据库对事务的处理。
   

2、redis数据结构

- redis存储的是:key,value格式的数据,其中key为字符串,value为任意类型。
- 物种擦略数据结构:
  - 1) 字符串类型 string
  - 2) 哈希类型 hash : map格式  
  - 3) 列表类型 list : linkedlist格式。支持重复元素
  - 4) 集合类型 set  : 不允许重复元素
  - 5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序

redis命令行操作命令

2、1 String 字符串

存储:set key value     --set username zhangsan

获取:get key               -- get username

删除: del key              -- del username

2、2 hash 哈希

存储:hset key field value    -- hset myhash username list

获取:hget key filed              -- hget myhash username

删除:hdel key field              -- hdel myhash username

2、3 list 列表

存储:lpush key value,将元素加入列表左边

           rpush key value:将元素加入列表右边

获取:lrange key start end :范围获取

删除:lpop key:删除最左边的元素,并将元素返回

           rpop key:删除最右边的元素,并将元素返回

2、4 set  集合

存储:sadd key value        -- sadd myset  a

获取:smembers key       -- 获取集合中的所有元素

删除:srem key value       -- sream myset a

2、4 sortedset有序集合

存储:zadd key score value     -- zadd mysort 60 zhangsan

获取:zrange key start end [withscores]           --zadd mysort  0   -1

删除:zrem key value                  -- zrem mysort zhangsan

    通用命令:         1. keys * : 查询所有的键
                            2. type key : 获取键对应的value的类型
                            3. del key:删除指定的key value
   

代码演示

    /**
     * Jdies快速入门
     */
    public class JedisTest {
        @Test
        public    void testString() {
            //1获取连接
            Jedis jedis = new Jedis();//如果使用空参构造,默认值为localhost 6379
            //操作
            //存储
            jedis.set("username","zhangsan");
            //获取
            String username = jedis.get("username");
            System.out.println(username);
            //关闭连接/
            //可以使用serex()方法存储可以指定给过期事件key value
            jedis.setex("username",3000,"23856877852765872587");
            System.out.println("----------------------------------------------------");
   
            jedis.close();
        }
   
        @Test
        public  void testHash(){
            //1/获取链接
            Jedis jedis = new Jedis();
            jedis.hset("user","name","lisi");
            String hget = jedis.hget("user", "name");
            System.out.println(hget);
   
            //获取所有
            Map<String, String> user = jedis.hgetAll("user");
            Set<String> keySet = user.keySet();
            for (String key: keySet) {
                System.out.println(user.get(key));
            }
            System.out.println("----------------------------------------------------");
   
            jedis.close();
        }
    @Test
        public void testSet(){
            Jedis jedis = new Jedis();
            jedis.sadd("myset","java","c#","c++");
            Set<String> myset = jedis.smembers("myset");
            for (String s : myset) {
                System.out.println(s);
            }
            System.out.println("----------------------------------------------------");
   
            jedis.close();
        }
   
        @Test
        public void testsortset(){
            Jedis jedis = new Jedis();
            jedis.zadd("mysortset",3,"亚瑟");
            jedis.zadd("mysortset",1,"f发放f");
            jedis.zadd("mysortset",4,"fff");
            Set<String> mysortset = jedis.zrange("mysortset", 0, -1);
            Set<Tuple> mysortset1 = jedis.zrangeWithScores("mysortset", 0, -1);
            for (String s : mysortset) {
                System.out.println(s);
            }
   
            for (Tuple tuple : mysortset1) {
   
                System.out.println(tuple.getScore()+" = "+tuple.getElement());
            }
            System.out.println("----------------------------------------------------");
            jedis.close();
        }


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马