返回顶部
首页 > 资讯 > 数据库 >Redis
  • 673
分享到

Redis

Redis 2015-04-27 09:04:15 673人浏览 猪猪侠
摘要

NoSQL (Not Only sql) 非关系型数据库 行式存储数据库    一般的关系型数据库Mysql,oracle,SqlServer等 列式存储数据库    Cassandra  文档型数据库 mongoDB key-valu

NoSQL (Not Only sql) 非关系型数据库


行式存储数据库    一般的关系型数据库Mysql,oracle,SqlServer等
列式存储数据库    Cassandra 
文档型数据库 mongoDB
key-value型数据库:

Memcached
    早期的NoSql数据库
    数据在内存中,不能持久化
    支持简单的key-value模式
    一般作为缓存数据库
    
Redis 
    包含了Memcached的大部分功能
    数据在内存中,支持持久化,用作备份
    除了支持简单的key-value模式,还支持多种数据结构的存储,如list,set,hash, zset
    用作缓存数据库一般
    
    

一 . Redis 的 安装与启动

$ wget Http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar -xzvf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make

问题:

 make时报错解决:缺少命令GCc..

$ yum install gcc gcc-c++

 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

解决方案1 : 

$ make MALLOC=libc         //注意等号两边不能有空格

解决方案2 : 

$ make distclean  //在make之前执行此命令
$ make

 

In order to install Redis binaries into /usr/local/bin just use:

$ make install

You can use `make PREFIX=/some/other/directory install` if you wish to use a different destination.

 

 

启动redis 

$ redis-server

配置redis 后台启动

修改redis.conf 文件:

# By default Redis does not run as a daemon. Use "yes" if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize no

no 改为 yes 

然后:

redis-server redis.conf //此命令可带参数 指定配置文件的位置

查看服务启动与否:

启动成功:

没启动或失败:

 

二 . redis 服务 命令行接口: redis-cli  客户端

        用来和redis服务通信的

  127.0.0.1:6379> help @server

  BGREWRITEAOF - 异步重写AOF

  BGSAVE - 异步保存数据集到磁盘

  CLIENT GETNAME - 拿到当前连接名

  CLIENT ID - 返回当前连接的客户端ID

  CLIENT KILL [ip:port] [ID client-id] [TYPE nORMal|master|slave|pubsub] [ADDR ip:port] [SKIPME yes/no] 杀死某个客户端的连接

  CLIENT LIST - 拿到所有客户端的链接集合

  CLIENT PAUSE timeout 停止处理来自客户端的命令一段时间

  CLIENT REPLY ON|OFF|SKIP 指示服务器是否答复命令

  CLIENT SETNAME connection-name 设置当前的连接名

   ......

常用操作:

        多实例端口选择:

$ redis-cli -p 6379 //指定服务端口
$ 127.0.0.1:6379> ping
PONG

        单实例关闭:

$ redis-cli shutdown
//或进入redis-cli后在关闭
127.0.0.1:6379> shutdown

        指定端口关闭:

$ redis-cli -p 6379 shutdown

  
 

 

2)String类型 操作命令

 

 

三 . Redis 相关知识

 

1)  默认16个数据库,类似数组下标从0开始,初始默认使用0号库

    使用命令 select 来切换数据库 ,如 select 12

2)统一密码管理,所有库都是同样的密码,要么都OK,要么一个也连接不上

3) Redis  单线程 + 多路IO复用

    串行     vs     多线程 + 锁 (Memcached)     vs     单线程 + 多路IO复用(Redis)

注:多路复用是指,使用一个线程来检查多个IO请求的就绪状态


 

 

四. Redis 五大数据类型

key

 Redis 的数据类型:  String     Set     list    hash    zset(有序Set)

 

0) 关于键 key 的命令

         查看当前库的所有键:    $ keys *

        判断某个键是否存在:    $ exists

        查看键的类型:    $ type

        删除某个键: $ del

        为键值设置过期时间,单位秒: expire

        查看还有多少秒过期,-1表示永不过期,-2 表示已过期    ttl

        查看当前数据库的key的数量 :     dbsize

        清空当前库: flushdb    flushall

 

  1)  String : 是Redis最基本的类型,一个key 对应一个 value

                是二进制安全的。意味着Redis的String可以包含任何数据,比如jpg图片或者序列化的对象

                是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M

        操作命令:

                查询对应键值:    get

                添加键值对:    set

                将给定的追加到原值的末尾 : append

                获得值得长度:strlen

                只有在key不存在时设置key的值:   setnx

                incr : 将key中存储的数字值加1,只能对数字值操作,如果为空,新增值为1

                decr : 将key中存储的数字值减1,只能对数字值操作,如果为空,新增值为 -1

                incrby/decrby <步长> :   将 key 中储存的数字值增减。自定义步长

                mset ...

                mget ...

                msetnx ...

                getrange <起始位置> <结束位置>

                setrange <起始位置> :  用覆写所存储的字符串值,

                从<起始位置>开始

                setex <过期时间> value: 设置键值的同事,设置过期时间

                getset : 设置了新值的同时获得旧值

 

原子性: 所谓原子操作是指,不会被线程调度机制打断的操作

                在单线程中,能够在单条指令中完成的操作都可以认为是原子操作

                在多线程中,不能被其他进程或线程打断的操作就叫原子操作

                Redis单命令的原子性主要得益于Redis的单线程

 

2) List , 单键多值

               Redis列表是简单的字符串列表,按照插入顺序排序,可以在列表的头部(左边)或者          

                (右边) 添加一个元素

                底层: 是一个双向链表,所以两端操作性能很高,中间的节点性能较差

                注意: push / pop 操作 类似于栈,先push的在尾部

        操作命令:

                lpush/rpush ...  从左边或右边插入一个或多个值

                lpop/rpop 从左边/右边吐出一个值, 值在键在,值亡键亡

                rpoplpush 列表右边吐出一个值,插入到列表的左边

                lrange : 按照索引下标获得元素(从左到右)

                lindex : 按照索引下标获得元素(从左到右)

                llen 获得列表长度

                linsert before : 在  的前面插入

                lrem : 从左边删除n个value(从左到右)

 

3) Set , 自动排重

              Set提供了判断某个成员是否在一个Set集合内的重要接口,List没有

              Redis的Set是String类型的无序集合

              底层: 是一个value 为 null 的hash表, 所以添加,删除, 查找的复杂度都是O(1)

    

     操作命令:

            sadd ...  将一个或多个元素加入到集合中,如已存在,则忽略

            smembers :  取出该集合的所有值

            sismember : 判断集合是否含有该< value>值,有返回1,无返0

            scard 返回集合元素个数

            srem ... 删除集合中的某个元素

            spop 随机从该集合中吐出一个元素

            srandmember : 随机从该集合中取出n个值, 不会从集合中删除

            sinter :  返回两个集合的交集元素

            suNIOn : 返回两个集合的并集元素

            sdiff : 返回两个集合的差集元素 sdiff

 

4) hash ,  是一个键值对集合

                 是一个String 类型的field 和 value 的映射表

                特别适合用于存储对象

                类似于 Java里面的 Map

 

    操作命令:

                hset : 给 集合中的 键赋值

                hget : 从集合 取出 value

                hmset ...   批量设置hash的值

                hexists key

                hkeys

                hvals

                hincrby : 为哈希表key中的域field的值加上增量increment

                hsetnx : 将哈希表key中的域field的值设置为value ,

                当且仅当field不存在

 

5) ZSet (sorted set), 是一个有序的没有重复元素的字符串集合

                                       所有成员都关联了一个评分(score)

                                       评分score用来按照从最低分到最高分的方式排序集合中的成员

                                       成员唯一,评分可以重复

      操作命令:

                zadd ...

                zrange [WITHSCORES]   by 下标

                zrangebyscore key min max [WITHSCORES]       by score

                zrevrangebyscore key max min [WITHSCORES] [limit offset count]

                zincrby

                zrem

                zcount

                zrank : 返回该值在集合中的排名

                

                

       

五. Redis 的Java客户端 Jedis

 

1) 导包



    redis.clients
    jedis
    3.0.1

 

2) 连接虚拟机Redis服务注意事项

        1.  禁用linux的防火墙  

            systemctl stop firewalld

        2.  redis.conf 中注释掉 bind 127.0.0.1 (60行左右)

             protect-mode (80行左右) 设置为 no

 

3) 测试连通性

public class JedisTest {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.18.130", 6379);
        jedis.select(3); //选择库
        Set keys = jedis.keys("*"); //获取键集
        String ping = jedis.ping(); //输出 PONG
        for (String key : keys) {
            System.out.println(jedis.smembers(key)); //Set类型的遍历
        }
    } 
}

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

您可能感兴趣的文档:

--结束END--

本文标题: Redis

本文链接: https://lsjlt.com/news/2588.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【redis】redis 锁
    前言 本文围绕 redis 的 SETNX 命令展开对“锁”的研究与实现。多个进程同时对 redis 执行 SETNX string_key timestamp_expired 命令,只有一个进程会成...
    99+
    2023-09-11
    redis php
  • redis 6.0 redis-cluster
    伴随着Redis6.0的发布,作为最令人怦然心动的特性之一,Redis官方同时推出Redis集群的proxy了:redis-cluster-proxy,https://github.com/RedisLabs/redis-clus...
    99+
    2020-12-24
    redis 6.0 redis-cluster
  • redis 6.0下redis-cluster
    伴随着Redis6.0的发布,作为最令人怦然心动的特性之一,Redis官方同时推出Redis集群的proxy了:redis-cluster-proxy,https://github.com/RedisLabs/redis-clus...
    99+
    2016-07-16
    redis 6.0下redis-cluster
  • Redis PHP连接Redis
    Redis是一款高性能分布式内存数据库,支持数据持久化(可以把内存里的数据保存到硬盘中),支持list、hash、set、zset数据类型,支持master-salve模式(主从)。部署redis服务1、下...
    99+
    2024-04-02
  • [Redis]Redis客户端
    文章目录 1. Redis 客户端2. Redis 命令行客户端2.1 redis-cli 的使用2.1.1 进入 redis-cli 交互控制台方式一2.1.1 进入 redis...
    99+
    2023-09-10
    redis 数据库 缓存 nosql 服务器
  • [Redis]python连接redis
    只是看看能不能成功使用python操作redis,redis具体的数据结构和使用会在以后学习。安装连接redis的包pip install redis本地已经在6379端口启动了redis服务。In [1]: importredis In ...
    99+
    2023-01-31
    Redis python redis
  • 【Redis】redis-cluster到redis-cluster的快速复制
    现有个需求是redis-cluster到redis-cluster的快速迁移,并且迁移过后两套redis-cluster都要独立使用无依赖 方法一:使用前面redis迁移中的在线迁移工具 r...
    99+
    2024-04-02
  • 【redis】Redis专题介绍
    1、Redis 持久化 Redis 提供了不同级别的持久化方式,Redis持久化也是消耗内存的操作,特别是写比较频繁的数据库;了解redis数据库持久化的工作方式,选择合适的数据持久化方式。 RDB持久化方式能够在指定的时间间隔能对你的数据...
    99+
    2020-09-20
    【redis】Redis专题介绍
  • redis 实战-redis 事务
    redis 实战-redis 事务   1.描述      redis 事务单独的隔离操作:事务中的所有命令都会序列化、按顺序执行。事务在执行过程中,不会被其他客户端发送过来的命令请求所打断。     redis 事务没有隔离级别...
    99+
    2021-02-21
    redis 实战-redis 事务
  • 安装redis及python redis
    第一部分:安装redis mkdir /usr/local/redis cd /usr/local/srcwget http://download.redis.io/releases/redis-2.8.12.tar.gztar xzf r...
    99+
    2023-01-31
    redis python
  • Redis
    NoSql (Not Only Sql) 非关系型数据库 行式存储数据库    一般的关系型数据库Mysql,Oracle,SqlServer等 列式存储数据库    Cassandra  文档型数据库 MongoDB key-valu...
    99+
    2015-04-27
    Redis
  • Redis系列(一)Redis入门
    NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。 Redis 系列: ...
    99+
    2020-02-02
    Redis系列(一)Redis入门
  • 初学Redis(二)--安装Redis
    redis官网,可以下载linux版本 https://redis.io/ windows版本 https://github.com/MicrosoftArchive/redis/releases 百度网盘有已经下载好的。可...
    99+
    2017-04-08
    初学Redis(二)--安装Redis
  • Redis教程(一):Redis简介
    一、简介: 在过去的几年中,NoSQL数据库一度成为高并发、海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机。然而在众多产品中能够脱颖而出的却屈指可数,如Redis、MongoDB、Be...
    99+
    2022-06-04
    简介 教程 Redis
  • Redis系列--2、Redis配置
    1、Redis配置在Redis有配置文件(redis.conf)可在Redis的根目录下找到。可以通过Redis的CONFIG命令设置所有Redis的配置。2、配置文件说明:1. Redis默认不是以守护进...
    99+
    2024-04-02
  • 浅析Redis Sentinel 与 Redis Cluster
    目录一、前言二、Redis Sentinel 及 Redis Cluster 简介1、Redis Sentinel1.1、Redis Sentinel 集群模式的 “仲裁会”2、Re...
    99+
    2024-04-02
  • Redis-3. Redis高级命令
    高级命令三:主从复制1、主从复制:目的是实现读写分离·Master可以拥有多个slave·多个slave可以连接同一个Master外,还可以连接其他的slave·主从复制不会阻塞master,在同步数据时,master可以继续处理clien...
    99+
    2023-01-31
    命令 高级 Redis
  • 【Redis】Redis高可用之Redis Cluster集群模式详解(Redis专栏启动)
    📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级...
    99+
    2023-09-01
    java 面试 开发语言 redis 集群
  • Redis | 第7章 Redis 服务器《Redis设计与实现》
    目录前言1. 命令请求的执行过程1.1 发送命令请求1.2 读取命令请求1.3 命令执行器(1):查找命令实现1.4 命令执行器(2):执行预备操作1.5 命令执行器(3):调用命令的实现函数1.6 命令执行器(4):执行后续工作1.7 ...
    99+
    2022-04-27
    Redis | 第7章 Redis 服务器《Redis设计与实现》
  • 【Redis】Redis持久化之AOF详解(Redis专栏启动)
    📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级...
    99+
    2023-09-05
    redis 缓存 数据库 java AOF
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作