资讯专栏INFORMATION COLUMN

大数据系列——Redis学习笔记

Mr_houzi / 2859人阅读

摘要:数据类型之集合的是类型的无序集合。集合中添加元素集合中的元素是不能重复如果添加的已经存在在中则返回不存在则返回数据类型之有序集合和一样也是类型元素的集合且不允许重复的成员。不同的是每个元素都会关联一个类型的分数。

1. Redis的简介

   Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理

它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型

内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

简言之,Redis是一种面向“键/值”对数据类型的内存数据库,可以满足我们对海量数据的快速读写需求

2. Redis的特点

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用

Redis不仅仅支持简单的k-v类型的数据,同时还提供list,set,zset,hash等数据结构的存储

Redis支持数据的备份,即master-slave主从模式的数据备份

3. Redis的优势

性能极高——Redis读的速度为11w/s,写的速度为8.1w/s

丰富的数据类型 (Strings,Lists,Hashes,Sets即Ordered Sets )

原子性——Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行

丰富的特性——Redis还支持publish/subscribe,通知,key过期等特性。

4. 常用的NoSql数据库

hbase

存储海量的数据(数十亿行,百万列)

redis

基于内存的nosql数据库

一般使用redis做缓存或者队列

mogodb

在结构化数据比较简单的情况下,可以使用mogodb代替mysql,作为一个高性能的数据库

5. Redis的安装 5.1 Redis单机版的安装

准备源码安装包

​ redis-3.2.0.tar.gz

解压

​ tar -zxvf redis-3.2.0.tar.gz -C /opt/

重命名

​ mv redis-3.2.0/ redis

安装gcc编译器

​ yum -y install gcc

编译安装源码

​ make && make install

注意:编译安装完成之后会在src目录下出现redis的相关命令

修改redis.conf的配置项

bind node1   (默认是127.0.0.1,这是本地回环地址,只能本地应用程序之间进行通信)
daemonize yes(后台运行)
logfile   /opt/redis/logs/redis.log(日志文件,目录必须存在)    

启动Redis-Server

src/redis-server redis.conf

启动redis客户端

src/redis-cli -h uplooking05 -p 6379

5.2 Redis集群的安装

把前面安装好的单机版的redis拷贝到uplooking04 uplooking03

修改redis.conf

bind uplookingxxxxx

在从节点(uplooking04 uplooking05) redis.conf 末尾追加

slaveof uplooking03 6379

修改从节点为只读不写(redis官方推荐的)(uplooking04 uplooking05)

slave-read-only yes

修改主节点(uplooking03)

slave-read-only no

ps:注意启动集群时尽量先启动主节点再启动从节点

6. Redis中配置的查看

Redis的配置文件位于Redis的安装目录之下,文件名为redis.conf。可以通过config命令来查看或设置配置项

config get confName: 获取配置的值

config set confName confVal: 设置配置的值

7. Redis中的数据类型

string(字符串)

hash(哈希)

list(列表)

set(集合)

zset(sorted set)有序的集合

8. 数据类型之String(字符串)

string是redis中最基本的数据类型

一个key对应一个value

string类型的value是基于二进制存储的,所以完全可以存储图片和影音等二进制数据

key的大小最大512mb

存储数据: set name value

读取数据: get name

删除redis中的key说对应的value: del key

9. 数据类型之Hash(哈希)

Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象 object

存储一个数据: HSET KEY fieldName value

获取数据: HGET KEY fieldName

设置多个数据: HMSET info sex nan address gansu

获取多个数据: HMGET info sex address

删除hash中的多个个键值对: HDEL info admin ...

删除redis中的key说对应的value: del key

10. 数据类型之List(列表)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

首部添加数据: LPUSHloves java c++ python..

尾部添加元素: RPUSH linux hadoop..

查看数据: lrange loves 0 10000

首部移除元素: LPOP loves

尾部移除元素: RPOP loves

列表最多可存储 232-1元素 (4294967295, 每个列表可存储40多亿)。

11. 数据类型之Set(集合)

Redis的Set是string类型的无序集合。

集合中添加元素: SADD key member member ,member ...

SMEMBERS loves

集合中的元素是不能重复,如果添加的value已经存在在redis中则返回0,不存在则返回1

12. 数据类型之ZSet(有序集合)

Redis zset和set一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序

zset的成员是唯一的,但分数(score)却可以重复

给zset添加数据: ZADD loves 5 java

获取固定得分范围的数据: ZRANGEBYSCORE loves 1 20

13. Redis中的常用命令 13.1 键值对相关

keys * 取出当前所有的key

exists name 查看redis是否有name这个key

del name 删除key name

expire confirm 100 设置confirm这个key100秒过期

ttl confirm 获取confirm 这个key的有效时长

persist confirm 移除confirm这个key的过期时间

select 0 (在redis中总共有16个数据库,默认是0号数据库)

move confirm 1 将当前数据库中的key移动到其他的数据库中

randomkey 随机返回数据库里面的一个key

rename key2 key3 重命名key2 为key3

type key2 返回key的数据类型

13.2 服务器相关

select 0~15 编号的数据库

quit /exit 退出客户端

dbsize 返回当前数据库中所有key的数量

info 返回redis的相关信息

==flushdb 删除当前选择数据库中的所有key==

==flushall 删除所有数据库中的数据==

14. Reds中的API操作

pom依赖


            redis.clients
            jedis
            2.9.0
        

常用操作

package com.uplooking.bigdata.redis;

import org.junit.Test;
import redis.clients.jedis.Jedis;

public class RedisTest {
    @Test
    public void testString() {
        //创建Jedis
        Jedis jedis = new Jedis("uplooking03");
        jedis.select(0);
        jedis.set("name", "value");
        System.out.println(jedis.get("name"));
    }


    @Test
    public void testHash() {
        //创建Jedis
        Jedis jedis = new Jedis("uplooking03");
        jedis.select(0);
        jedis.hset("info", "name", "admin");
        jedis.hset("info", "age", 12 + "");
        System.out.println(jedis.hget("info", "name"));
    }


    @Test
    public void testList() {
        //创建Jedis
        Jedis jedis = new Jedis("uplooking03");
        jedis.select(0);
        jedis.rpush("loves", "java", "c++", "python");
        jedis.lpop("loves");
        System.out.println(jedis.lrange("loves", 0, 10000));
        System.out.println(jedis.rpop("loves"));
        System.out.println(jedis.lrange("loves", 0, 10000));
    }
}

15. Redis可视化工具

RedisDesktopManager

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37224.html

相关文章

  • Java学习笔记系列-Codis

    摘要:什么是一个分布式解决方案,多个节点构成的集群上层应用可以像使用单机的一样使用,底层会处理请求的转发,不停机的数据迁移等工作实例的计算能力汇集到一起,从而完成关于大数据和高并发量的的读写操作组成部分,处理客户端请求,支持协议,因此客户端访问 什么是Codis 一个分布式 Redis 解决方案,多个 Redis 节点构成的集群 上层应用可以像使用单机的 Redis 一样使用,Codis ...

    wwolf 评论0 收藏0
  • 『 读书笔记 』4月读书总结|博文推荐

    摘要:原文链接读书笔记月读书总结博文推荐写在前面计划是每月读本书,书籍类型大概是三个方面的金融,技术,管理。严重推荐,值得认真研读。推荐指数创业维艰这本书真正吸引我的,是它的英文原标题。 原文链接:『 读书笔记 』4月读书总结|博文推荐 写在前面 计划是每月读 5-10 本书,书籍类型大概是三个方面的:金融,技术,管理。之所以选择这三个方面,一方面是因为自己对这三个方面都很有兴趣,其次是被 ...

    URLOS 评论0 收藏0
  • Redis学习笔记】2018-06-22 scan命令

    摘要:情况看看如何处理情况需要从和中都取出数据主要的难点在于如何在大的哈希表中找到应该取哪些代码如下判断条件为的为的为二者异或之后取值为即取二者高位的值然后看游标是否在高位还有值下一个游标的取值方法为右半部分取的低位左半部分取的高位。 顺风车运营研发团队 张仕华1.scan类型命令 SCAN cursor [MATCH pattern] [COUNT count] SSCAN KEY cu...

    Me_Kun 评论0 收藏0
  • Android工程师转型Java后端开发之路,自己选的路,跪着也要走下去!

    本文是公众号读者jianfeng投稿的面试经验恭喜该同学成功转型目录:毅然转型,没头苍蝇制定目标,系统学习面试经历毅然转岗,没头苍蝇首先,介绍一下我的背景。本人坐标广州,2016年毕业于一个普通二本大学,曾经在某机构培训过Android。2018年初的时候已经在两家小公司工作干了两年的android开发,然后会一些Tomcat、Servlet之类的技术,当时的年薪大概也就15万这样子。由于个人发展...

    Yangder 评论0 收藏0
  • Android工程师转型Java后端开发之路,自己选的路,跪着也要走下去!

    本文是公众号读者jianfeng投稿的面试经验恭喜该同学成功转型目录:毅然转型,没头苍蝇制定目标,系统学习面试经历毅然转岗,没头苍蝇首先,介绍一下我的背景。本人坐标广州,2016年毕业于一个普通二本大学,曾经在某机构培训过Android。2018年初的时候已经在两家小公司工作干了两年的android开发,然后会一些Tomcat、Servlet之类的技术,当时的年薪大概也就15万这样子。由于个人发展...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<