Redis

Redis

一. Redis特性

  1. 速度快

    基于内存, C语言实现, 单线程架构, 集性能和优雅于一身的代码

  2. 基于键值对的数据结构服务器

    REmote DIctionary Server. 值可以是字符串/哈希/列表/集合/有序集合, Bitmap等等

  3. 丰富的功能

    键过期功能. 发布-订阅功能(实现消息系统), Lua脚本, 简单的事务, 流水线(Pipeline)

  4. 简单稳定

    代码少, 早期版本2万行. 3.0版本以后加入集群功能, 5万行. 单线程模型

  5. 客户端语言多

  6. 持久化

    (RDB和AOF方式)存放到硬盘中

  7. 主从复制

  8. 高可用和分布式

二. Redis使用场景

  1. 缓存/session

  2. 排行榜系统

  3. 计数器应用

    视频的播放/浏览次数. 并发量太大, 对传统数据库挑战较大

  4. 社交网络

    赞/踩, 粉丝, 共同好友/喜好等等杂的数据

  5. 消息队列系统

    主要用于业务解耦

三. Redis安装

使用docker安装redis

四. Redis Shell

  1. redis-server 启动Redis

    默认端口6379, 使用--port xxx指定端口号
    指定配置文件

  2. redis-cli 命令行接口

五. Redis使用

1. 全局命令

keys * 查看所有的key

dbsize 查看有多少key

exists key 查看是否有一个key(1是true,0是false)

del key 返回值是删除的数量,可以删除多个

expire key seconds 给key设置过期时间

type key 查看key是什么类型的

2. 数据结构和内部编码

2.1 数据结构
  1. string 字符串

    nx 如果这个key存在就不添加,没有就添加 set age 10 nx

    xx 根据key修改value set height 100 xx

    setex code 10 8979789 设置带过期时间的key 生成一个key叫code,有效期10秒,value是8979789

    setnx code 100 这个key存在就不添加,没有就添加,简写方法

    key 都是字符串类型, 而且其他几种数据结构都是在字符串类型基础上构建的.

    字符串类型的值实际上可以是简单或复杂的字符串(JSON/XML), 数字, 甚至是二进制(图片, 音频, 视频, 最大512M)

    mset, 批量设置值, 可以提高开发效率
    mget, 批量获取值

    计数,
    incr key, ++ 自增1
    decr key, – 自减1
    incrby key xx, 自己指定自增多少 例子: incrby number 10
    decrby key xx 同上

    开发中合理的key名, 业务名:对象名?属性

  2. hash 哈希(存键值对,一个键对应多个属性,一个属性对应一个值)

    hset user:1 name lisi 给user:1 这个key设置一个属性name,值为lisi
    hset user:1 age 27 同上
    hget user:1 age 获取age的属性值
    hdel user:1 name age 删除属性
    hlen user:1 获取属性个数
    hmset user:2 name wzc age 29 批量设置
    hmget user:2 name age 批量获取
    hexists user:2 money 查看某个key是否有某个属性(1是true,0是false)
    hkeys user:1 获取一个key的所有属性
    hvals user:1 获取一个key的所有属性的value
    hgetall user:1 获取一个key的所有属性和value

  3. list 列表

    存储多个有序的字符串
    rpush key value … 右边插入元素 rpush admin:id value 1 2 3 4 5
    lpush key value … 左边插入元素 lpush admin:id value 9 8 7 6
    lrange key start end 查询坐标多少到多少之间的元素(0 -1 查询所有)lrange admin:id 0 100
    lpop key 左侧pop 弹出最左边的元素(相当于删除) lpop admin:id
    lrem key count value 重数组左侧删除某个3个a lrem admin:id 3 a

  4. set 集合

    不允许有重复元素.

    同时处理多个集合的交集/并集/差集

    sadd key element … 添加多个元素 sadd roleid:1 age qq email
    exists key 判断这个元素是否存在 exists roleid:1
    srem key element … 删除某个元素 srem roleid:1 zhangsan
    scard key 查看元素个数 scard roleid:1
    sismember key element 判断是否在集合中 sismember roleid:1 roleName
    smembers key 查看所有元素 smembers roleid:1

  5. zset 有序集合

    zadd key score member [score member…] 添加数据 zadd hotsearch 100 张三 99 LOL
    zcard key 查询属性个数 zcard hotsearch
    zscore key member 查询某个属性的分数
    zrem key member 移除一个属性
    zincrby key score member 给指定的属性添加多少分数 zincrby hotsearch 50 LOL
    zrevrange key start end 从大到小排序 zrevrange hotsearch 0 -1
    zrange key start end 从小到大 zrange hotsearch 0 -1

    两个key之间的差集/并集/交集
    在这里插入图片描述

清空所有缓存

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值