• 05 redis(进阶)


    redis

    阶段一、认识redis

    1、什么是redis

    Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:RemoteDictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

    2、redis特点:

    快速响应,数据量小

    Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。

    3、Redis应用场景:

    因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

    4、端口

    mysql端口:3306

    redis端口:6379

    mongoDB端口:27017

    阶段二、认识五种类型

    1、string字符串
    2、list列表
    3、hash哈希
    4、set集合
    5、sorted sets有序集合

    阶段三、五种类型的操作

    进入redis

    进入:redis-cli --raw

    不能进入,就安装:

    sudo apt-get update

    sudo apt-get install redis-server

    1、string字符串
    • 可以为整形、浮点型和字符串,统称为元素

    # 基本操作
    # 设置
    set key value   例:set name 'zcm'
    # 获取
    get key       例:get name
    # key是唯一的,不能用同一个key 不然就会覆盖
    # 查看过期时间
    # -1 表示永久   -2 表示不存在
    ttl key     例: ttl name
    ​
    # 设置过期时间
    # expire key seconds    例: expire name 20
    # 设置key的同时,设置过期时间
    set key value ex seconds    例: set age 18 ex 20
    或
    setex key seconds value     例: setex sex 20 'nan'# 追加
    # 给已有的value,再添加新的值
    append key value        例: append name love
    # get name
    # 设置/获取多个
    # 设置多个 string
    mset key value key value ..     例: mset username 'lucky' password '123'
    # 获取多个
    mget key key key ...        例: mget username password
    ​
    # key操作
    # 查看所有的key      例: keys *
    # 删除
    del key     例: del name
    # 查看key是否存在,存在返回 1,不存在返回 0
    exists key
    # 查看key类型
    type key
    ​
    # 运算
    set num 1   # 自动识别,字符串里面的 整数
    # +1
    incr key        例: incr num
    # -1
    decr kye        例: decr num
    # +整数
    incrby key increment    例: incrby num 50
    # -整数
    decrby key increment    例: decrby num 50
    2、list 列表

    实现队列,元素不唯一,先入先出原则

    # 设置
    # lpush 左添加 (栈 先进后出)
    lpush key value     # 例: lpush li 1 2 3 4
    # rpush 右添加 (队列 先进先出)
    rpush key value     # 例: rpush li 1 2 3 4
    # 查看
    # lrange key start stop
    例 查看所有
    lrange li 0 -1# 获得list的元素个数
    llen key        例: llen li
    ​
    # 查看位于 lindex 位置上的元素
    lindex key index    例: lindex li 3# 删除
    # 删除左边一个
    lpop key        例:lpop li
    # 删除右边一个
    rpop key        例:rpop li
    # 指定删除
    rpush my_list a a b b c d e e f
    # lrem key count value
    # count > 0 从左往右 删除数量为count的value
    例:lrem my_list 2 a
    # count = 0 删除所有的 value
    例:lrem my_list 0 b
    # count < 0 从右往左 删除数量为count的value
    例:lrem my_list -2 e
    3、hash哈希

    key : (field : value)

    是一个string类型的field和value的映射表,特别适合用于存储对象

    hash的key必须是唯一的

    # 设置
    # hset key field value      例:user {name:lucky}     hest user name lucky
    # 获取
    # hget key field        例:hget user name
    # 删除
    # hdel key field        例:hdel user name
    # 设置多个
    # hmset key field value [field value]
    例:user{name:lucky,age:18,sex:male}
    hmset user name lucky age 18 sex male
    # 获取多个
    # hmget key field field..
    例:hmget user name age sex
    # 获取全部 field value
    # hgetall key       例:hgetall user
    # 获取所有的 field
    # hkeys key     例:hkeys user
    # 获取所有的 value
    # hvals key     例:hvals user
    # 获取 field 的个数
    # hlen key      例:hlen user
    # 获取 field 的类型
    # type key      例:type user
    4、set集合

    各不相同的元素

    # 设置
    # sadd key value [value]    (唯一,无序)
    例:sadd my_set a w c d w e
    # 获取
    # smembers key      例:smembers my_set
    # 删除
    # srem 指定删除 srem key member     例:srem my_set c
    # spop 随机删除 spop key        例:spop my_set
    # 移动一个集合的值到另一个集合
    # smove oldkey newkey member        例:smove my_set my_set2 b
    # 判断集合存在某个值
    # sismember key value       例:sismember my_set2 b
    # 交集
    # sinter key1 key2 ..       例:sinter my_set my_set2
    # 把 key1 key2 的交集合并到 newkey
    # sinterstore newkey key1 key2      例:sinterstore new_set my_set my_set2
    # 并集
    # sunion key1 key2 ..       例:sunion my_set my_set2
    # 把 key1 key2 的并集合并到 newkey
    # sunionstore newkey key1 key2      例:sunionstore new_set2 my_set my_set2
    # 差集
    # sdiff key1 key2       例:sdiff my_set my_set2
    # 把key1 key2 的差集合并到 newkey
    # sdiffstore newkey key1 key2       例:sdiffstore new_set3 my_set my_set2
    # 获得集合个数
    # scard key     例:scard my_set
    # 随机返回一个
    # srandmember key       例:srandmember my_set
    5、sorted set有序集合
    # 设置
    # zadd key score member (权,权重,顺序)
    例:
    zadd my_zset 1 'one'
    zadd my_zset 2 'two'
    zadd my_zset 3 'three'
    zadd my_zset 4 'four'
    zadd my_zset 5 'five'
    # 获取
    # zrange 正序
    # zrange key start stop (withscores)    例:zrange my_zset 0 -1
    # zrevrange 倒序
    # zrevrange key start stop      例:zrevrange my_zset 0 -1
    # 删除
    # zrem key member       例:zrem my_zset two
    # 索引
    # zrank 正序
    # zrank key member      例:zrank my_zset three
    # zrevrank 反序
    # zrevrank key member   例:zrevank my_zset three
    # zcard 查看有序集合元素数
    # zcard key         例:zcard my_zset
    # zrangebyscore 返回集合中 score 在给定区间的元素
    # zrange my_zset 0 -1 withscores    返回全部元素
    # zrangebyscore my_zset 2 3 withscores  返回了 score 在 2~3 区间的元素
    # zcount 返回集合中 score 在给定区间的数量
    # zcount key min max        例:zcount my_zset 2 3
    # zscore 查看score值
    # zscore key member         例:zscore my_zset one
    # zremrangebyrank   删除集合中排名在给定区间的元素
    # zrange my_zset 0 -1 withscores        删除全部元素
    # zremrangebyrank my_zset 1 3
    # zremrangebyscore  删除集合中 score 在给定区间的元素
    # zrange my_zset 0 -1 withscores        删除全部元素
    # zremrangebyscore my_zset 1 2
  • 相关阅读:
    Access restriction: The type BASE64Encoder is not accessible due to restrict(转载)
    ECLIPSE控制台信息导出
    ZUI分页器的使用案例(ECLIPSE SMS项目)
    关于PLSQL启动用时较长的问题解决
    javax.naming.NamingException: Cannot create resource instance报错修改
    百度AI人脸识别的学习总结
    ECharts3.0饼状图使用问题总结
    jni开发
    AndroidStudio封装jar并混淆
    Androidstudio代码混淆
  • 原文地址:https://www.cnblogs.com/zcmq/p/9275794.html
Copyright © 2020-2023  润新知