redis数据库

redis有以下三个特点

  • redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  • redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
  • redis支持数据的备份,即master-slave模式的数据备份
  • 数据提供原子性操作

redis安装与配置

redis数据类型

string(字符串),hash(哈希),list(列表),set(集合)及zset(sort set:有序集合)

  • redis 键(key)

    • del key 删除存在的key
    • exists key 检查给定的key是否存在
    • keys pattern 正则匹配key名称
    • expire key 为给定的key设置过期时间,以秒计
    • ttl key 查看key的剩余生存时间/秒(TTL time to live)
    • rename key newkey 修改key的名称
    • type key 放回key所存储的值类型
  • String(字符串)

    • 设置

      • set key value 设置指定key的值
      • mset key value[key value] 同时设置一个或多个key-value对
      • setex key seconds value 将值key关联到key,并将key的过期时间设置为 seconds 秒
      • setns key value 只有在key不存在时设置key的值
      • append key value 如果已经存在并且是一个字符串,该命令将指定的value追加到该key原来值(value)的末尾
    • 获取
      • get key 获取指定key的值
      • mget key1 [key2...] 获取所有(一个或多个)给定key的值
      • strlen key 放回key所存储的字符串值得长度
  • hash(哈希)

    redis hash 是一个string类型的field和value的映射表,hash特别适合用用于存储对象 redis中每个hash可以存储 2^32 - 1 键值对(40多亿)

    • 判断

      • hexists key field 查看哈希表key中,指定的字段是否存在
    • 获取
      • hkeys key 获取哈希表中的所有值
      • hlen key 获取哈希表中字段的数量
      • hget key field 获取存储在哈希表中指定字段的值
      • hmget key field1 [field2] 获取所有给定字段的值
      • hgetall key 获取在哈希表中指定key的所有字段和值
      • hvals key 获取哈希表中所有值
    • 设置
      • hset key field value 将哈希表key中的字段field的值设置为value
      • hmset key field1 value1 [field2 value2] 同时将多个field-value(域-值)对设置到哈希表key中
    • 删除
      • hdel key field1 [field2...] 删除一个或多个哈希表字段
  • 列表(list)

    redis列表是简单的字符串类表,按照插入顺序排序。可以添加一个元素到类表的头部(左边)或尾部(右边) 一个类表最多可以包含 2^32 -1个元素

    • 插入

      • lpush key value1 [value2...] 将一个或多个值插入到列表头部
      • rpush key value1 [value2...] 在列表中添加一个或多个值
      • linset key before/after pivot value 在列表元素前或后插入元素(pivot指定列表中的元素,value准备插入的元素)
    • 获取

      • lrange key start stop 获取列表指定范围内的元素(-1为最后一个)
      • lindex key index 通过索引获取列表中的元素
      • llen key 获取列表长度
      • lpop key 移出并获取列表的第一个元素
    • 修改
      • lset key index value 通过索引设置列表元素的值
    • 删除

      • lrem key count value 通过索引设置列表元素的值

      count>0:从头往尾移除 count=0:从尾往头移除 count<0:移除所有

  • 列表和集合的区别

    1. list提供索引方式添加元素或获取元素,set不提供
    2. list集合是有序存储,set集合时无序存储(存储地址的有序、无序)
    3. list 可以存储重复的值,set不可以存储重复的值
    4. 在随机遍历中,set是根据hash值得大小遍历,呈现出的值是有序
  • set(集合)

    集合成员是唯一的

    • 添加

      • sadd key member1 [member2..]
    • 获取
      • scard key 获取集合的成员数
      • smembers key 返回集合中的所有成员
    • 删除
      • srem key member1 [member2...]
  • zset (有序集合)

    每一个元素都会关联一个double类型的score(权重)

    • 添加

      • zadd key score1 member1 [score2 member2...] 向有序集合添加一个或多个成员,或者更新已存在成员的score
    • 获取
      • zcard key 获取有序集合的成员数
      • zrange key start stop 通过索引区间返回有序集合指定区间内的成员
      • zrangebyscore key mix max 通过分数返回有序集合指定区间内的成员
      • zscore key member 返回成员member的权重
    • 删除
      • zrem key member1 [member2..] 删除指定元素
      • zremrangebyscore key min max 删除权重在指定范围的元素

redis主从配置

  • 主配置

    • 修改etc/redis/redis.conf 中的 bind:主ip
  • 从配置

    1. 复制主配置中的redis.conf文件 ===》 重命名 slave.conf
    2. 修改文件中的 bind:从ip
    3. slaveof:主ip:主端口 ===》主从备份
    4. port 从端口
  • 查看主从关系

    • redis-cli -h ip -p port info Replication
  • 进入主从客户端

    • redis-cli -h ip -p port
  • 主从配置应用

    • 可以通过主配置添加修改内容,从配置读取内容(负载均衡)

redis集群

一组相互独立的,通过高速网络互联的计算机,它们构成一个组,并以单一系统的模式加以管理

1. redis集群采用叫哈希槽的方式分配数据,redis cluster默认分配到16384个stost,当写入数据:内部会自动匹配到对应的槽
2.redis集群会把数据存到一个master节点,然后在这个master和其对应的salve之间进行数据同步
3.必须要3个或3个以上节点才能创建集群
  • 软件层面

    • 只有一台主机,在这台电脑上启动多个redis服务
  • 硬件层面

    • 存在多台主机,每台主机上启动一个或多个redis服务
  • 集群节点配置

    • 在/etc/redis 下创建 7000.conf

    7000.conf文件中配置信息

    1. port 7000
    2. bind ip
    3. dammonize yes
    4. pidfile 7000.pid
    5. cluster-enabled yes
    6. cluster-config-file 70000_node.conf
    7. cluster-node-timeout 15000
    8. apendonly yes
    • 其他主机创建 70001.conf ,配置同上,修改对应的内容
    • 启动服务
      • sudo redis-sever ./7000.conf
    • 查看集群
      • ps aux | grep redis

        • 看到关键字:cluster(集群)
  • 安装环境依赖

    • 安装ruby环境

      • sudo apt-get install ruby
    • 创建集群
      • redis-trib.rb create --replicas 1 ip1:port1 ip2:port2 ...
    • 连接集群
      • redis-cli -h ip -c -p port

redis数据库的基础的更多相关文章

  1. Redis数据库入门基础,及优缺点介绍

    简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis 是一个高性能的key-value数据库.R ...

  2. redis数据库基础篇

    一.Redis介绍 Redis 是一个高性能的key-value数据格式的内存缓存,NoSQL数据库.NOSQL:not only sql,泛指非关系型数据库.关系型数据库: (mysql, orac ...

  3. 关于Redis数据库 ---- 基础篇

    Redis数据库也被称为数据结构数据库,因为存储基于key-value模式. 其中,value值可以为字符串(string),哈希(map),列表(list),集合(set)和有序集合(zset). ...

  4. SpringBoot2.0 基础案例(08):集成Redis数据库,实现缓存管理

    一.Redis简介 Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elastic ...

  5. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  6. Redis数据库入门教程

    [使用redis客户端] 我们直接看一个例子: 复制代码 代码如下: //这样来启动redis客户端了 $ ./redis-cli //用set指令来设置key.value 127.0.0.1:637 ...

  7. Redis数据库的使用与介绍

    本周11-15号开始用Redis数据库在现有的平台基础上开发一个独立模块,这是一个边学习.边记录.边交流.边开发.边总结的过程.大部分随笔都是个人的“工作日志”,旨在记录自己学习过程中收集的一些资料, ...

  8. [转载]NoSQL数据库的基础知识

    关系型数据库和NoSQL数据库 什么是NoSQL 大家有没有听说过“NoSQL”呢?近年,这个词极受关注.看到“NoSQL”这个词,大家可能会误以为是“No!SQL”的缩写,并深感愤怒:“SQL怎么会 ...

  9. 超强、超详细Redis数据库入门教程(转载)

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下   [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...

随机推荐

  1. JAVA的特性

    JAVA有三大特性:封装,继承和多态 一. 封装 封装就是将类的信息隐藏在类内部,不允许外部程序直接访问,而是通过该类的方法实现对隐藏信息的操作和访问. 封装的实现 a. 需要修改属性的访问控制符(修 ...

  2. Android 切换横竖屏

    一个项目一般会自己先定义项目是横屏还是竖屏但是也有可以横屏和竖屏之间切换的activty. 切换横竖屏的方法: //判断当前屏幕方向if(getRequestedOrientation() == Ac ...

  3. Adreno OpenCL坑——bool转int

    在项目代码中为了避免条件分支,需要把bool变成int的形式,然后通过向量运算的形式和单个单个的形式,其结果却是不同,向量的方式为(-1, 0),而单个的转换则为(1, 0) 有如下kernel代码: ...

  4. 【Chrome插件】去掉因使用jsonView插件的弹出窗口"请停用以开发者模式运行的扩展程序"

    前言 小编最近使用jsonView插件时,每次打开谷歌浏览器都会弹出下面的窗口,上网搜索,找到一个非常有效的方法. 解决方法 一.新建一个文本文档 二.复制代码 <# : @echo off c ...

  5. windows 结束端口占用

    1. cmd 调出命令行窗口 2. netstat -ano  查看端口被占用情况 3.命令:tasklist | findstr "9480"  发现被httpd.exe 占用 ...

  6. NumPy的基本用法

    NumPy简介:NumPy是高性能科学计算和数据分析的基础包.是pandas等其他各种工具的基础NumPy主要功能:ndarray,一个多维数组结构,高效且节省空间无需循环对数组数据进行快速运算的数学 ...

  7. Cocos Creator—如何给资源打MD5版本号

    Cocos Creator 是Cocos最新一代的游戏开发者工具,基于 Cocos2d-x,组件化,脚本化,数据驱动,跨平台发布.Cocos Creator的开发思路已经逐步跟Unity 3D靠拢,写 ...

  8. 两篇文章带你走入.NET Core 世界:Kestrel+Nginx+Supervisor 部署上云服务器(二)

    背景: 上一篇:两篇文章带你走入.NET Core 世界:CentOS+Kestrel+Ngnix 虚拟机先走一遍(一) 已经交待了背景,这篇就省下背景了,这是第二篇文章了,看完就木有下篇了. 直接进 ...

  9. Java核心技术第八章——泛型程序设计(1)

    1.泛型程序设计 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用.例如:不希望为了聚集String和Integer对象分别设计不同的类.(个人觉得此处说的聚集译为:创建一个对象,属性可以为 ...

  10. Python爬虫11-XML与XPath概述及lxml库的应用

    GitHub代码练习地址:用lxml解析HTML,文件读取,etree和XPath的配合使用:https://github.com/Neo-ML/PythonPractice/blob/master/ ...