Redis基础版

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 Redis基础版,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、redis安装基本命令

  • 安装默认目录:/usr/local/bin (redis-server:redis服务启动命令,redis-cli:客户端,操作入口)
  • 设置后台启动,cp /opt/redis-3.2.5/redis.conf /etc;启动命令 redis-server /etc/redis.conf
  • ps -ef | grep redis查看进程端口,kill -9 端口
  • 在/usr/local/bin下 redis-cli进入redis客户端setget

2、常用五大数据类型

2.1、String字符串

  • 数据结构为简单的动态字符串,内部实现类似于arrayList,字符串最大长度为512M。
  • 原子性,不会被线程调度机制打断的操作
    在这里插入图片描述

2.2、List列表

  • 数据结构为双向链表
  • 元素少情况下为ziplist(压缩列表)
    在这里插入图片描述

2.3、Set集合

  • set是string类型的无序集合,底层是一个value为null的hash表(hashtable)
  • set是可以自动去重的
    在这里插入图片描述

2.4、Hash哈希

  • hash是一个键值对集合
  • hash是一个string类型的field和value的映射表,hash特别适合存储对象,类型map
    在这里插入图片描述
    在这里插入图片描述

2.5、Zset有序集合

  • zset是一个没有重复元素有顺序的字符串集合
  • 每个成员关联了一个评分(score),此评分被用来按照从低到高方式排序集合中的成员。
  • 底层结构hash保障数据唯一,跳跃表设置排序
    在这里插入图片描述

3、新数据类型

3.1、Bitmaps(位操作)

  • Bitmaps本身不是一种数据类型,实际就是01的字符串,可以把Bitmaps想象成一个以为为单位的数组,数组每个单位智能存储0和1,数组的下标在Bitmap中叫偏移量。
    在这里插入图片描述
  • 设置偏移量,设置的为1,不设置的都为0
    在这里插入图片描述
  • bitcount统计数据
    在这里插入图片描述
  • bittop 可以查交集并集非等操作

3.2、HyperLogLog

  • 解决大量数据的基数问题,类似set去重,但是占用空间少
    在这里插入图片描述
    在这里插入图片描述

3.3、Geospatial

  • 该类型就是元素的二维坐标,就是经纬度。
    在这里插入图片描述
  • 计算两地的距离
    在这里插入图片描述

4、Jedis操作

4.1、测试连接redis

Jedis jedis = new Jedis("192.168.75.128", 6379);
String ping = jedis.ping();
//测试redis是否连接成功
System.out.println("连接成功返回标志:"+ping);
连接成功返回标志:PONG

4.2、string类型

//获取所有的key
Set<String> keys = jedis.keys("*");
System.out.println("查询所有key:"+keys);
//设置String类型key-value
jedis.set("name","张三");
jedis.set("age","10");
//通过key查询value
String age = jedis.get("age");
System.out.println("查询key为age的值:"+age);
//判断key是否存在
Boolean exists = jedis.exists("age");
System.out.println("查看key为age的键值对是否存在:"+exists);
//每次incr,value值+1,只能数字字符串,否则报错
jedis.set("k11","123");
jedis.incr("k11");
//设置key过期时间
jedis.expire("age", 100);
//设置多个key-value
jedis.mset("str1","v1","str2","v2","str3","v3");
//获取多个key
List<String> mget = jedis.mget("str1", "str2", "str3");
System.out.println("查询key为str1、str2、str3多个key的值为:"+mget);
查询所有key:[name, str3, k1, str1, k2, str2]
查询key为age的值:10
查看key为age的键值对是否存在:true
查询key为str1、str2、str3多个key的值为:[v1, v2, v3]

4.3、List类型

//设置list
jedis.lpush("nameList","lucy","mary","jack");
//获取所有的值
List<String> nameList = jedis.lrange("nameList", 0, -1);
System.out.println("获取list值"+nameList);
获取list值[jack, mary, lucy]

4.4、Set类型

//设置set
jedis.sadd("ageSet","1","2","2","3");
Set<String> ageSet = jedis.smembers("ageSet");
System.out.println("获取set值:"+ageSet);
获取set值:[1, 2, 3]

4.5、Hash类型

//设置hash值
jedis.hset("user","name","张三");
jedis.hset("user","age","12");
String name = jedis.hget("user", "name");
System.out.println("获取hash值:"+name);
//或者map形式
Map<String, String> hashMap = new HashMap<>();
hashMap.put("name1","李四");
hashMap.put("age1","15");
jedis.hset("user1",hashMap);
String name1 = jedis.hget("uer1", "name1");
System.out.println("获取hashMap值:"+name1);
获取hash值:张三
获取hashMap值:李四

4.6、Zset类型

//zset类型
jedis.zadd("china",100,"shanghai");
jedis.zadd("china",110,"beijing");
jedis.zadd("china",90,"gaugnzhou");
Set<String> china = jedis.zrange("china", 0, -1);
System.out.println("获取所有的zset值:"+china);
获取所有的zset值:[gaugnzhou, shanghai, beijing]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148668.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!