redis入门

随笔3个月前发布 李阳看点
39 0 0

redis入门

Nosql与sql

Nosql是什么

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

sql是什么

sql指的是关系型数据库。关系型数据库要满足4大特征,也就是我们常提的ACID原则(A原子性、C一致性、I独立性、D持久性)

sql与nosql

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
sql支持关系复杂的数据查询,nosql反之
sql支持事务性,nosql不支持

典型的nosql数据库

Mongodb、redis、Hbase hadoop

redis

redis介绍

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件
redis是c语言编写的,支持数据持久化,是key-value类型数据库。
应用在缓存,队列系统中
redis支持数据备份,也就是master-slave模式

redis优势

性能高,读取速度10万次每秒(还可以通过集群再度提升)
写入速度8万次每秒
所有操作支持原子性

应用情况

用作缓存数据库,数据放在内存中
替代某些场景下的mysql,如社交类app
大型系统中,可以存储session信息,购物车订单

redis入门

redis安装

存在通过yum和源码安装两种情况,这里直接写执行步骤,不做赘述。

    # 1.yum安装
    # 查看redis版本
    yum list redis
    # 安装redis
    yum install redis
    # 启动redis
    systemctl start redis

    # 2. 源码安装
    # 下载redis源码
    wget http://download.redis.io/releases/redis-4.0.10.tar.gz
    # 解压缩
    tar -zxf redis-4.0.10.tar.gz
    # 编译安装
    make && make install
    # 安装到指定目录,默认在redis目录下的src底下
    # 下面自己配置环境变量
     echo PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/vimx/bin:/root/binopt/redis-4.0.10/src" >> /etc/profile
    # 运行以完成安装
    [root@localhost src]# redis-server --version
    Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=92305af7dfef4310

redis可执行文件

    # redis的客户端
    ./redis-cli 
    # redis的服务端
    ./redis-server
    # 用于集群管理
    ./redis-sentinel
    # redis性能测试工具
    ./redis-benchmark
    # 用于修复出问题的dump.rdb文件
    ./redis-check-dump
    # 用于修复出问题的AOF文件
    ./redis-check-aof

redis基本配置文件

    # 如果使用源码安装的话,那么配置文件目录在src下的redis.conf。
    # redis默认不会调用配置文件启动。需要指定配置文件
    redis-server redis.conf

    # 重要配置
    bind 127.0.0.1 # 配置可连接的ip
    port 6379 # 配置redis启动端口
    daemonize yes # 守护进程方式运行(后台运行)
    dbfilename dump.rdb # 数据文件指定
    dir /var/lib/redis/ # 数据文件存放路径
    logfile /var/log/redis/redis-server.log # 日志文件
    slaveof # 主从复制
    requirepass password # 密码

redis支持的数据类型

redis是一种高级的key:values储存系统。支持下面5种数据类型:

字符串(strings)
散列(hashes)
列表(lists)
集合(sets)
有序集合(sorted sets)

基本命令

    # 进入redis服务端
    redis-cli
    # 接下来可以执行redis命令
    ping # 回复pong说明通了
    keys * # 查看所有的键
    set key value # 设置一个键值
    expire key # 给key加上过期时间
    get key  # 获取一个键的值
    type key # 显示value的类型
    ttl key # 查看key的过期时间。(-1表示永不过期,-2表示已过期)
    persist key # 取消key的过期时间(对过期的key没用)
    exists key # 监测key是否存在
    del key # 删除key

    dbsize # 计算key的数量
    flushall # 删除所有库的所有键
    flushdb # 删除当前数据库的所有键

各数据类型常用命令

详细:详细命令可以参考菜鸟教程、py鱼博客随笔

    # string
    set key # 设置key
    get  key # 获取key
    append key value # 追加string
    mset  key1 value1 key2 value2 # 设置多个键值对
    mget  key1 key2 key3 # 获取多个键值对
    del key # 删除key
    incr key # 递增+1
    decr key # 递减-1

    # list
    lpush 列表名 value1 value2 # 从左一个一个插入
    rpush 列表名 value1 value2 # 从右一个一个插入
    lrange 列表名 第一个切片值 第二个切片值 # 从第一个到第二个之间的列表值(如 lrange paidui 0 -1 拿列表所有的值)
    ltrim 列表名 截取开头 截取结尾 # 将列表切片覆盖原列表,注意取前也取后
    lpop 列表名 # 从左删
    rpop 列表名 # 从右删

    # set
    sadd/srem key value1 value2  # 添加/删除 元素
    sismember key value  # 判断是否为set的一个元素
    smembers  key  # 返回集合所有的成员
    sdiff key1 key2 # 返回一个集合和其他集合的差异(差集key1-key2)
    sinter  key1 key2 # 返回几个集合的交集(交集)
    sunion  key1 key2 # 返回几个集合的并集(并集)

    # 哈希(dict)
    hset key field value # 设置散列值(一个)
    hget key field  # 获取散列值
    hmset key field1 value1 field2 value2 # 设置多对散列值
    hmget key field1 field2 # 获取多对散列值
    hsetnx key field value # 如果散列已经存在,则不设置(防止覆盖key)
    hkeys key # 返回所有keys
    hvals key # 返回所有values
    hlen key # 返回散列包含域(field)的数量
    hdel key field # 删除散列指定的域(field)
    hexists key field # 判断是否存在
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...