• Redis-key的基本命令和Redis最常用的数据类型:String


    Redis有5大数据类型:string,set,hash,list,zset。
    三大特殊数据类型:bitmaps位图、hyperloglog基数统计 和 geospatial 地理空间

    在这里插入图片描述
    Redis是一个开源(BSD许可)的,基于内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件MQ。它支持多种类型的数据结构,如字符串( strings ),散列 ( hashes ),列表( lists ),集合( sets ),有序集合( sorted sets)与范围查询,bitmaps,hyperloglogs和地理空间 ( geospatial))索引半径查询。Redis内置了复制( replication ),LUA脚本( Luascripting ),LRU驱动事件( LRU eviction ),事务(transactions)和不同级别的磁盘持久化 ( persistence ),并通过Redis哨兵 ( Sentinel )和自动分区(Cluster )提供高可用性( high availability )。

    我们现在讲解的所有命令大家一定要全部记住,后面我们使用SpringBoot、Jedis时,用代码去操作redis,使用的所有的方法就是这些命令!
    单点登录:在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    redis-Key的基本命令

      # 启动redis服务
    [root@giao bin]# redis-server myRedisConfig/redis.conf 
    [root@giao bin]# redis-cli -p 6379  # 启动客户端
    127.0.0.1:6379> ping     # 测试连接
    PONG
    127.0.0.1:6379> flushAll  # 清空所有数据库
    OK
    127.0.0.1:6379> keys *  # 查看所有key
    (empty array)
    127.0.0.1:6379> set name UNO
    OK
    127.0.0.1:6379> get name
    "UNO"
    127.0.0.1:6379> set age 1
    OK
    127.0.0.1:6379> get age
    "1"
    127.0.0.1:6379> keys *
    1) "name"
    2) "age"
    127.0.0.1:6379> exists name   # 查看这个key存在不存在
    (integer) 1
    127.0.0.1:6379> exists sex
    (integer) 0
    127.0.0.1:6379> del name   # 移除这个键“name”
    (integer) 1
    127.0.0.1:6379> keys *
    1) "age"
    127.0.0.1:6379> expire name 10   # 设置这个key过期时间,10代表10秒钟
    (integer) 1
    127.0.0.1:6379> get name   # 此时还有
    "UNO"
    127.0.0.1:6379> ttl name   # 查看还有多久过期,下面的数字代表秒数
    (integer) 5
    127.0.0.1:6379> ttl name
    (integer) 4
    127.0.0.1:6379> ttl name
    (integer) 1
    127.0.0.1:6379> ttl name
    (integer) -2
    127.0.0.1:6379> get name   # 过一会就没了
    (nil)
    127.0.0.1:6379> type name   # 查看改keys对应值的类型
    string
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    还有不会的命令,就去官网找,或者去百度
    redis中文网

    接下来进入正题:

    String:字符串类型

    90%的java程序员使用redis只会使用一个String类型!

    127.0.0.1:6379> set key1 v1
    OK
    127.0.0.1:6379> get key1
    "v1"
    127.0.0.1:6379> append key1 hello  # 往一个key中追加字符串,如果没有这个key,就新建了一个key
    (integer) 7
    127.0.0.1:6379> get key1
    "v1hello"
    127.0.0.1:6379> strlen key1   # 展示这个字符串的长度,string length
    (integer) 7
    
    #############################################################
    i++
    步长
    127.0.0.1:6379> set num 0    # 初始值为0
    OK
    127.0.0.1:6379> get num
    "0"
    127.0.0.1:6379> incr num   # 自增1,可用于浏览量,多一个人看,就让这个数值加1
    (integer) 1
    127.0.0.1:6379> incr num
    (integer) 2
    127.0.0.1:6379> get num
    "2"
    127.0.0.1:6379> decr num   # 自减1,又变回1了
    (integer) 1
    127.0.0.1:6379> get num
    "1"
    127.0.0.1:6379> incrby num 10   # 这个数字是:可以设置步长,指定增量
    (integer) 11
    127.0.0.1:6379> incr num   # 指定只管用他自己那一次,这一次还是加1
    (integer) 12
    127.0.0.1:6379> get num
    "12"
    127.0.0.1:6379> decrby num 9   # 指定减少量
    (integer) 3
    #############################################################
    # 范围获取(截取字符串)range,相当于java里的substring
    127.0.0.1:6379> set str "hello,world hello,my love"
    OK
    127.0.0.1:6379> get str
    "hello,world hello,my love"
    127.0.0.1:6379> getrange str 0 5   # 获取范围 key 从第几个索引到第几个索引
    "hello,"
    127.0.0.1:6379> getrange str 0 -1    # 要获取全部,0到-1就行
    "hello,world hello,my love"
    
    # 范围设置(字符串替换)类似于java的replace
    127.0.0.1:6379> set key2 abcde
    OK
    127.0.0.1:6379> get key2
    "abcde"
    127.0.0.1:6379> setrange key2 1 xx   #从第几个索引开始替换,替换的内容是什么
    (integer) 5
    127.0.0.1:6379> get key2
    "axxde"
    #############################################################
    # setex (set with expire) 设置过期时间
    # setnx (set if not exist) 如果不存在,则设置他这个key(在分布式锁中常常使用)
    
    127.0.0.1:6379> setex key3 30 "ccccc"   # 设置30秒之后过期
    OK
    127.0.0.1:6379> ttl key3   # 查看过期时间
    (integer) 26
    127.0.0.1:6379> get key3
    "ccccc"
    127.0.0.1:6379> setnx mykey "bbbbb"   # 如果不存在,则设置这么一个key
    (integer) 1   # 结果为1,说明设置成功
    127.0.0.1:6379> get mykey
    "bbbbb"
    127.0.0.1:6379> setnx mykey "aaaaa"   # 由于mykey存在,则设置结果失败
    (integer) 0   # 结果为0,说明设置失败
    127.0.0.1:6379> get mykey   # 可以看到还是bbbbb
    "bbbbb"
    #############################################################
    # mset: 批量设置key
    # mget:批量获取key
    
    127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3   # 批量设置
    OK
    127.0.0.1:6379> mget k1 k2 k3   # 批量获取
    1) "v1"
    2) "v2"
    3) "v3"
    127.0.0.1:6379> msetnx k1 v1 k4 v4   
    # 如果不存在则批量设置,但是此时这里的k1是存在的,
    # 又因为这是一个原子性的操作,所以一起失败了,即使k4不存在,也无法设置
    (integer) 0
    127.0.0.1:6379> get k4
    (nil)   # 没有这个key
    
    #############################################################
    # 对象  
    # 设置一个user:1对象,值是json格式的字符串,来保存一个对象
    
    127.0.0.1:6379> set user:1 {name:UNO,age:18}   #json内容用大括号括起来
    OK
    127.0.0.1:6379> get user:1
    "{name:UNO,age:18}"
    # 第二种方式,使用mset
       #设置对象的属性key和value,到后面去取就行了
    127.0.0.1:6379> mset user:2:name zhangsan user:2:age 19
    OK
    127.0.0.1:6379> mget user:2:name user:2:age
    1) "zhangsan"
    2) "19"
    #############################################################
    # getset :先get再set
    
    127.0.0.1:6379> getset db mysql   #如果不存在,则返回nil(空),并设置这个key
    (nil)
    127.0.0.1:6379> get db
    "mysql"
    127.0.0.1:6379> getset db oracle   # 先获取原来的值,再修改新值
    "mysql"
    127.0.0.1:6379> get db
    "oracle"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117

    String类似的使用场景:value除了是我们的字符串还可以是我们的数字!

    计数器
    统计多单位的数量
    粉丝数:有人关注就incr,有人取关就decr
    对象缓存存储!

  • 相关阅读:
    mipi介绍
    好习惯助你编写高质量 Java 代码
    Linux单列模式实现线程池
    【服务器磁盘清理技巧】
    java-php-python-springboot校园服装租赁系统计算机毕业设计
    Python学习—基础
    线程强制执行join
    【通意千问】大模型GitHub开源工程学习笔记(2)--使用Qwen进行推理的示例代码解析,及transformers的库使用
    axios 拦截器
    【软考软件评测师】第二十四章 系统安全设计(防火墙技术)
  • 原文地址:https://blog.csdn.net/dayuiicghaid/article/details/125617856