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 

  • 相关阅读:
    [Dynamic Language] Python Django: 模板引擎(3)模板标签和过滤器
    [Linux] Ubuntu: 登陆界面无法输入密码
    [Dynamic Language] Python Exec & Compile
    [Dynamic Language] Python: 类基本结构和继承
    [Linux] VIM 代码折叠
    [Database] MongoDB (2) 高级查询条件操作符
    [Dynamic Language] Python: unindent does not match any outer indentation level
    [Linux] VMware 配置linux后出现提示:Failed to initialize remote display subsystem
    [Database] Redis (2) redispy API Reference
    [Database] MongoDB (1) 基本连接、操作、查询
  • 原文地址:https://www.cnblogs.com/zhuawang/p/11355621.html
Copyright © 2011-2022 走看看