Redis3

4 篇文章 0 订阅

大小

  • 默认有16个数据库
  • 使用的是第0个

切换数据库

  • select [n] n是几就切换到第几个

查看大小

  • DBSIZE 仅仅查的是当前数据库大小

查看所有的key

  • keys *

清空当前数据库

  • flushdb

清空全部数据库

  • flushall

6379默认端口号

哈哈哈哈

redis 单线程

  • 操作很快
  • 基于内存操作
  • cpu不是redis性能瓶颈
  • 机器内存和网络带宽才是
  • 完全不必memcache差 每秒不低于10玩QPS
    • 高效能不一定是多线程
    • 单线程并不一定比多线程差
    • cpu>内存>硬盘
  • 多线程会产生CPU的上下文切换,耗时操作
  • 没有上下文切换,则效率最高
  • 读写都在一个CPU上,效率很高

作用

  • 数据库
  • 缓存
  • 消息代理

redis key基本命令

  • 新建key:set name [nnn]
  • 查看所有的key:keys *
  • 移除key:mv [nnn]
  • 设置过期时间:expire name 10 设置10秒后过期
  • 查看当前key的剩余时间:ttl name
  • 判断当前key是否存在:exits name
  • 追加key,如果key不存在则创建:append key ‘xxx’
  • 查看当前key的类型:type name

5大基本数据类型

  • 字符串String

    • 值+1:incr views
    • 值-1:decr views
    • 查看用:get views
    • 步长+1:incrby views 10
    • 步长-1:decrby views 10
    • 获取区间值[0-10]:getrange views 1 10
    • 获取所有值:getrange views 1 -1
    • 替换从指定位置开始的字符串串:setrange views 1 xxx
    • 当前值存在与不存在:
      - 设置过期时间
      - setex key3 30 ‘hello’ 设置key3的值为hrllo,30秒后过期
      - ttl key3
      - 不存在设置(应用于分布式锁中)
      - setnx mykey ‘redis’ 如果mykey不存在则设置,存在则创建失败
      - keys *
  • mset k1 v1 k2 v2 k3 v3 同时设置多个值

  • mget k1 k2 k3 批量获取

  • msetnx k1 v2 k4 v4 如果某个key不存在,返回值为0。msetnx是一个原子性操作,要么一起成功要么一起失败。

  • 对象

    • set user:1{name:zhangsan.age:3}设置一个对象,值为json字符来保存一个对象
    • 这里的key是一个巧妙的设计,user:{id}:{field}
    • mset user:1:name zhangsan user:1:age 12
    • mget user:1:name user:1:age2
  • getset db redis 如果不存在值,则返回nil

  • (nil)

  • get db

  • “redis”

  • getset db mongdb 如果存在值,获取原值,设置新值

  • “mongdb”

  • String类型的应用场景:

    • 计数器
    • 统计多单位的数量
    • 粉丝数
    • 对象缓存存储
  • 列表List

  • 基本数据类型

  • 栈、队列、阻塞队列的应用

  • 所有list命令都是以l开头

  • lpush list one

  • 1

  • lpush list two

  • 2

  • lpush list three

  • 3

  • lrange list 0 -1

  • ‘three’

  • ‘two’

  • ‘one’

  • rpush list right

  • 4

  • lrange list 0 -1

  • ‘three’

  • ‘two’

  • ‘one’

  • ‘right’

  • lpop list 移除列表第一个元素

  • ‘three’

  • rpop list 移除列表最后一个元素

  • ‘right’

  • lrange list 0 -1

  • ‘two’

  • ‘one’

  • linex list 1 通过下标获得list中的某一个值

  • ‘one’

  • llen list 返回列表的长度

  • 移除指定的值(可以存在重复的值)精确匹配

  • lrem list 1 one 移除list中的一个one

  • lrem list 2 three 移除list中的两个three

  • 保留其中一部分元素

  • ltrim list 1 2 只截取中间两个值,list已经被修改只剩下截取的数据

  • rpoplpush list list2 移除列表最后一个元素放到新列表中

  • lset list 0 item 将列表中的指定值更新为另一个值
    -(error)ERR index no such key不存在则报错

  • linsert list before ‘eord’ ‘other’ 将某一个具体的value插入到指定值的前面或者后

  • linsert list after ‘hello’ ‘java’

  • 实际上是一个链表,before Node after, left,right都可以插入值

  • 如果key不存在则创建新的链表

  • 如果key存在,则新增内容

  • 如果移除了所有值,空链表也代表不存在

  • 在两边插入或者改动值效率最高

  • 操作中间元素,相对来说效率较低

  • 消息队列!(Lpush Rpop),栈(LPUSH,LPOP)

  • 集合 Set

    • 值不能重复
    • s开头的命令
    • sadd myset “hello” set集合中添加元素
    • smembers myset 查看指定set的所有值
    • sismember myset hello 判断某个值是不是在set集合中 返回值为Integer(1或0)
    • scard myset 获取set集合中的内容元素个数
    • srem myset hello 移除set集合中指定元素
    • srandmember myset set无序随机抽出一个元素
    • srandmember myset 2 set无序随机抽出2个元素
    • spop myset 移除随机的key
    • smov myset myset2 ‘xiamuzi’ 将一个指定元素移动到另外的set
    • sunion key1 key2 并集
    • sdiff key1 key2 差集
    • sinter key1 key2 交集
  • 哈希hash

    • hset myhash field1 xiamuzi

    • (integer)1

    • hget myhash field1

    • “xiamuzi”

    • hmset myhash field1 xiamuzi1 field2 xiamuzi2

    • ok

    • hmget myhash field1 field2

    • hdel myhash field1 删除hash指定的key字段,对应的value也会消失

    • ngetall myhash 获取所有

    • hlen myhash hash长度

    • hexits myhash fields 判断指定字段是否存在

    • 只获得对应的field

    • hkeys myhash

    • 只获得对应的value

    • hvals myhash

    • hset myhash fields 5 指定增量

    • hincrby myhash fields 1 给fields+1

    • hincrby myhash fields -1 给fields-1

    • hsetnx myhash fields4 hello 如果不存在则设置;如果存在则不能设置,返回值是1或0

    • hash更适合对象的存储

  • zset

    • 比hash多了排序

    • zadd myzset 1 one 添加一个值

    • zadd myzset 2 two 3 three 添加多个值

    • zrange myzset 0 -1 查询所有

    • zrangebyscore myzset -inf +inf 查询所有(分别为+inf正无穷和-inf负无穷)

    • zrangebyscore myzset 1 2 查询前两个

    • zrangebyscore myzset (1 2 查询大于第一个小于等于第二个

    • zrangebyscore myzset (1 (2 查询大于第一个小于第二个

    • 127.0.0.1:6379> zadd myset 1 ‘one’

    • (integer) 1

    • 127.0.0.1:6379> zadd myset 2 ‘two’

    • (integer) 1

    • 127.0.0.1:6379> zadd myset 3 ‘three’

    • (integer) 1

    • 127.0.0.1:6379> zrank myset ‘three’ 查询指定数据有几个

    • (integer) 2

    • 127.0.0.1:6379> zrank myset ‘four’ 不存在

    • (nil)

    • 移除

    • 127.0.0.1:6379> zrange myset 0 -1

      1. “one”
      1. “two”
      1. “three”
    • 127.0.0.1:6379> zrem mset "two’

    • Invalid argument(s)

    • 127.0.0.1:6379> zrem mset “two”

    • (integer) 0

    • 127.0.0.1:6379> zrem myset “two”

    • (integer) 1

    • 127.0.0.1:6379> zrange myset 0 -1

      1. “one”
      1. “three”
        https://redis.io/commands/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值