zoukankan      html  css  js  c++  java
  • 学习redis常用命令

    1.开启服务和客户端

     

    image-20200723232544524

     

    如何查看redis进程?

    第一种

     

    image-20200723232951677

     

    第二种

     

    image-20200723233027748

    2.基础知识

    redis有16个数据库,依次索引为0~15

    默认是第一个数据库,也就是索引为0

    怎么知道的呢?去查看 redis-config 配置文件

     

    image-20200723233501769

     

    那么如果想切换数据库,怎么办呢?

    使用select 索引数字

     

    image-20200723233833615

     

    怎么查看数据库的大小呢?

    使用dbsize

     

    image-20200723234518281

     

    注:flushall 清空所有数据库的数据

    flushdb 清空当前数据库

    keys * 查看当前数据库所有的key

     

    redis是单线程还是多线程?

    是单线程!!

    redis是基于内存操作,CPU不是redis性能瓶颈,redis的性能瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!

    redis 是C语言写的,官方提供的数据为十万+的QPS,完全不比同样是使用key-value的Memecache差!

    redis单线程为什么还那么快?

    误区1:高性能的服务器一定是多线程的?

    误区2:多线程(CPU上下文会切换)一定比单线程效率高?

    先要了解 CPU>内存>硬盘的速度

    核心:redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效果是最高的,多线程(CPU上下文会切换:耗时的操作!!!),对于内存系统来说,没有上下文切换,效率就是最高的!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!

     

     

    3.五大数据类型

    1.redis-key

     

    image-20200724000851636

     

    设置key的过期时间(秒)

     

    image-20200724001506642

    怎么查看key值类型?

    type key

    怎么把当前数据库的key 移动到 别的数据库?

    move key 数据库索引数字

     

    image-20200724002248055

     

    2.String

    如果想在type类型为String的value后面追加字符串,该怎么办呢?

    使用 append key 想追加的字符串

     

    image-20200724183842937

     

    如果想看看value的长度呢?

    使用 strlen key

     

    image-20200724184049527

     

    文章的浏览量或者视频的播放量,如果用redis怎么实现呢?

    相当于实现自增 value++

    使用 incr key

     

    image-20200724230931144

     

    同理 自减 就使用 decr key

     

    那么如果是想实现步长(指定增量)呢?

    相当于实现 value+= value -=

    使用 incrby key 步长数字

    decrby key 步长数字

     

    image-20200724231624292

     

    那么如果想得到字符串的某部分呢?

    也就是截取,相当于java的字符串的substring()方法

    使用getrange key 开始索引数字 结束索引数字

     

    image-20200724233533580

     

    如果想替换字符串的某部分呢?

    使用setrange key 开始索引数字

     

    image-20200724234147474

     

     

    如果我想在set key value 同时 expire second 呢?

    setex = set expire

    使用 setex key second value

    ###########################################

    image-20200725105025578

    ###########################################

    如果我想在某个key不存在的时候,就创建呢?

    setnx = set not exists

    使用 setnx

    ###########################################

    image-20200725105718963

    ###########################################

    如果我想一条命令就创建多个key,并且一条命令获取多个key,怎么办?

    mset key value [key value ...]

    mget key [key ...]

    记忆:前面加上一个 m = many 多个的意思

    ###########################################

    image-20200725110720322

    ###########################################

    但是注意:msetnx 是一个原子性的操作,要么一起成功,要么一起失败

     

    ###########################################

    image-20200725112654483

    image-20200725112914242

     

    ###########################################

     

    如果我想创建一个对象,怎么搞呢?

    ###########################################

     

    image-20200725114007467

    ###########################################

     

    这里key是一个巧妙的设计: user : {id} : {filed} ,如此设计在redis中是完全OK的!

    ###########################################

    image-20200725114931385

    ###########################################

     

  • 相关阅读:
    转换流--OutputStreamWriter类与InputStreamReader类
    Android getResources的作用和须要注意点
    sqlit使用要点之引入libsqlite3.dylib
    C语言文件操作之fgets()
    5款伊思儷超媒體繁体游戏 中文简体补丁
    memcpy的使用方法总结
    开发人员改变世界的初心
    expect
    HDU 1061 N^N (n的n次方的最后一位)
    linux杂谈(二十):apache服务配置
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/13369750.html
Copyright © 2011-2022 走看看