zoukankan      html  css  js  c++  java
  • redis_String

    String 常用命令:

    • 设置值:set key value [ex seconds] [px milliseconds ] [nx|xx]

      127.0.0.1:6379> keys *      --查看所有键
      (empty list or set)
      127.0.0.1:6379> exists hello   --判断key  hello是否存在  返回0不存在
      (integer) 0
      127.0.0.1:6379> set hello   world    
      OK                               
      127.0.0.1:6379> setnx hello redis    #setnx 用于新添加,因为hello已经存在,所以添加不成功
      (integer) 0
      127.0.0.1:6379> set hello jedis xx   #set  xx 用于更新已经存在的,hello已经存在,多余更新成功 
      OK
      
      # 由于单线程处理机制,如果有多高客户端同时执行setnx key value,根据setnx的特性只有一个客户端可以设置成功,setnx可以作为分布式锁的一种实现方案。
      执行set命令会去掉过期时间。
      
    • 获取值:get key

      127.0.0.1:6379> get hello
      "jedis"
      127.0.0.1:6379> get not_exist_key
      (nil)
      
    • 批量设置值 mset key value [ key value ...]

      127.0.0.1:6379> mset  a 1   b 2   c 3   d 4
      OK
      
      #时间复杂度为O(k),k为键的个数
      
    • 批量获取值 mget key [ key ....]

      127.0.0.1:6379> mget a b c d
      1) "1"
      2) "2"
      3) "3"
      4) "4"
      #时间复杂度为O(k),k为键的个数
      
    • 批量操作命令可以提高开发效率

      get:执行n次get命令的时间=n次网络时间+n次命令执行时间
      mget:执行n次get时间  =1次网络时间 + n次命令时间
      
    • 计数 incr key

      127.0.0.1:6379> EXISTS key
      (integer) 0
      127.0.0.1:6379> incr key   #键不存在按照0开始自增,返回1
      (integer) 1
      127.0.0.1:6379> incr key
      (integer) 2
      127.0.0.1:6379> incr key
      (integer) 3
      127.0.0.1:6379> incr key
      (integer) 4
      127.0.0.1:6379> get key
      "4"
      
      # decr key 自减
      # incrby key num 自增指定数字
      # decrby key num 自减指定数字
      # incrbyfloat key floatnum 自增浮点数
      
      127.0.0.1:6379> DECR  key
      (integer) 3
      127.0.0.1:6379> INCRBY key 5
      (integer) 8
      127.0.0.1:6379> DECRBY key 5
      (integer) 3
      127.0.0.1:6379> INCRBYFLOAT key 1.0
      "4"
      

    不常用命令

    • append key value 追加值

      127.0.0.1:6379> keys *
      (empty list or set)
      127.0.0.1:6379> set key redis
      OK
      127.0.0.1:6379> get key
      "redis"
      127.0.0.1:6379> append key world
      (integer) 10
      127.0.0.1:6379> get key
      "redisworld"
      
      
    • strlen key 字符串长度

      127.0.0.1:6379> get key
      "redisworld"
      127.0.0.1:6379> strlen key
      (integer) 10
      127.0.0.1:6379> set hello "中国"
      OK
      127.0.0.1:6379> strlen hello
      (integer) 6            #一个中文占3个字节
      
    • getset key value 设置新值返回原值

    • setrange key offeset value

      127.0.0.1:6379> set redis pest
      OK
      127.0.0.1:6379> setrange redis 0 b   #索引从0开始
      (integer) 4
      127.0.0.1:6379> get redis
      "best"
      
    • getrange key start end 获取部分字符串的值

      127.0.0.1:6379> GETRANGE redis 0 1
      "be
      #O(n),n是字符串的长度。
      
      
    
    ### 内部编码
    
    + int:8个字节的长整型
    + embstr:小于等于39个字节的字符串
    + raw:大于39个字节的字符串
    
    redis会根据当前值的类型和长度自行决定使用哪种实现。
    
    ​```shell
    127.0.0.1:6379> object encoding redis
    "raw"
    
  • 相关阅读:
    区间K 大数查询
    最大最小公倍数
    吃糖果
    身份证号码升级
    威威猫系列之 吃鸡腿
    小Q系列之失恋
    查询7天之内的数据
    WebService案例 Spring boot+CXF开发WebService Demo
    开发过程中遇到问题
    oracle 自增序列 sequence
  • 原文地址:https://www.cnblogs.com/zhoujun007/p/13131613.html
Copyright © 2011-2022 走看看