zoukankan      html  css  js  c++  java
  • redis笔记1

    存储结构

    1. 字符类型
    2. 散列类型
    3. 列表类型
    4. 集合类型
    5. 有序集合
    6. 可以为每个key设置超时时间;
    7. 可以通过列表类型来实现分布式队列的操作
    8. 支持发布订阅的消息模式
    9. 提供了很多命令与redis进行交互
    10. 数据缓存(商品数据、新闻、热点数据)
    11. 单点登录
    12. 秒杀、抢购
    13. 网站访问排名…
    14. 应用的模块开发

    功能

    简单

    redis的应用场景

    redis的安装

    1. 下载redis安装包
    2. tar -zxvf 安装包
    3. 在redis目录下 执行 make
    4. 可以通过make test测试编译状态
    5. make install [prefix=/path]完成安装

    启动停止redis

    ./redis-server ../redis.conf

    ./redis-cli shutdown

    如果有lua脚本执行了死循环,需要用 ./redis-cli shutdown nosave 才能关闭

    以后台进程的方式启动,修改redis.conf   daemonize =yes

    连接到redis的命令

    ./redis-cli -h 127.0.0.1 -p 6379

    允许远程连接的设置 

    将 bind 127.0.0.1 使用#注释掉,改为# bind 127.0.0.1(bind配置的是允许连接的ip,默认只允许本机连接;若远程连接需注释掉,或改为0.0.0.0)
    
    将 protected-mode yes 改为 protected-mode no(3.2之后加入的新特性,目的是禁止公网访问redis cache,增强redis的安全性)
    
    

    其他命令说明

    Redis-server 启动服务

    Redis-cli 访问到redis的控制台

    redis-benchmark 性能测试的工具

    redis-check-aof aof文件进行检测的工具

    redis-check-dump  rdb文件检查工具

    redis-sentinel  sentinel 服务器配置

    多数据支持

    默认支持16个数据库;可以理解为一个命名空间

    跟关系型数据库不一样的点

    1. redis不支持自定义数据库名词
    2. 每个数据库不能单独设置授权
    3. 每个数据库之间并不是完全隔离的。 可以通过flushall命令清空redis实例面的所有数据库中的数据

    通过  select dbid 去选择不同的数据库命名空间 。 dbid的取值范围默认是0 -15

    使用入门

    1. 获得一个符合匹配规则的键名列表

    keys pattern  [? / * /[]]

    keys mic:hobby

    1. 判断一个键是否存在 , EXISTS key
    2. type key 去获得这个key的数据结构类型

    各种数据结构的使用

    字符类型

    一个字符类型的key默认存储的最大容量是512M

    赋值和取值

    SET key  value

    GET key

    递增数字
    incr key

     

    错误的演示

    int value= get key;

    value =value +1;

    set key value;

    key的设计

    对象类型:对象id:对象属性:对象子属性

    建议对key进行分类,同步在wiki统一管理

    短信重发机制:sms:limit:mobile 138。。。。。 expire

     

    incryby key increment  递增指定的整数

    decr key   原子递减

    append key value   向指定的key追加字符串

    strlen  key  获得key对应的value的长度

    mget  key key..  同时获得多个key的value

    mset key value  key value  key value …

    setnx

    列表类型

    list, 可以存储一个有序的字符串列表

    LPUSH/RPUSH: 从左边或者右边push数据

    LPUSH/RPUSH key value value …

    {17 20 19 18 16}

    llen num  获得列表的长度

    lrange key  start stop   ;  索引可以是负数, -1表示最右边的第一个元素

    lrem key count value 删除指定索引的值

    lset key index value 设置指定索引的值

    LPOP/RPOP : 取数据,取后数据即被从列表删除

    应用场景:可以用来做分布式消息队列

    散列类型

    hash key value  不支持数据类型的嵌套

    比较适合存储对象

    person

    age  18

    sex   男

    name mic

    ..

    hset key field value

    hget key filed

    hmset key filed value [filed value …]  一次性设置多个值

    hmget key field field …  一次性获得多个值

    hgetall key  获得hash的所有信息,包括key和value

    hexists key field 判断字段是否存在。 存在返回1. 不存在返回0

    hincryby

    hsetnx

    hdel key field [field …] 删除一个或者多个字段

    集合类型

    set 跟list 不一样的点。 集合类型不能存在重复的数据。而且是无序的

    sadd key member [member ...] 增加数据; 如果value已经存在,则会忽略存在的值,并且返回成功加入的元素的数量

    srem key member  删除元素

    smembers key 获得所有数据

    sdiff key key …  对多个集合执行差集运算

    sunion 对多个集合执行并集操作, 同时存在在两个集合里的所有值

    有序集合

    zadd key score member

    zrange key start stop [withscores] 去获得元素。 withscores是可以获得元素的分数

    如果两个元素的score是相同的话,那么根据(0<9<A<Z<a<z) 方式从小到大

    网站访问的前10名。

    redis的事务处理

    MULTI 去开启事务

    set userinfo:name victor 返回QUEUED

    set userinfo:age 18 返回 QUEUED

    EXEC 去执行事务

        exec 提交执行事务
    在执行中才报错的语句,事务不会回滚。

    过期时间

    expire key seconds

    ttl  获得key的过期时间

    发布订阅

    publish channel message

    subscribe channel [ …]

    分片策略:codis . twmproxy

    redis实现分布式锁

    数据库可以做 activemq

    缓存 -redis  setnx

    zookeeper 

  • 相关阅读:
    PHP实现无限极分类
    html2canvas生成并下载图片
    一次线上问题引发的过程回顾和思考,以更换两台服务器结束
    Intellij IDEA启动项目报Command line is too long. Shorten command line for XXXApplication or also for
    mq 消费消息 与发送消息传参问题
    idea 创建不了 java 文件
    Java switch 中如何使用枚举?
    Collections排序
    在idea 设置 git 的用户名
    mongodb添加字段和创建自增主键
  • 原文地址:https://www.cnblogs.com/zhuawang/p/11355621.html
Copyright © 2011-2022 走看看