• Redis,Redis命令


    启动关闭redis服务命令:

    微信交流群:Java技术沟通群⑤(点击加入)
    启动:redis-server
    在这里插入图片描述

    开启服务:redis-server
    进入:redis-cli -h localhost -p 6379~  redis-server
    ☁  ~  redis-cli -h localhost -p 6379
    localhost:6379>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    Windows服务
    D:\software\Redis-x64-3.2.100>redis-server --service-start
    [23804] 15 Jan 11:01:26.783 # Redis service successfully started.
    
    D:\software\Redis-x64-3.2.100>redis-server --service-stop
    [1240] 15 Jan 11:01:52.459 # Redis service successfully stopped.
    
    D:\software\Redis-x64-3.2.100>redis-server --service-start
    [8924] 15 Jan 11:03:12.491 # Redis service successfully started.
    
    D:\software\Redis-x64-3.2.100>redis-cli.exe -h 127.0.0.1 -p 6379
    127.0.0.1:6379> set userinfo xiaoming
    OK
    127.0.0.1:6379> get userinfo
    "xiaoming"
    127.0.0.1:6379>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    关闭:
    方式一: 先使用ps -ef|grep redis 或者是 ps aux|grep redis来查看redis的端口,然后输入kill redis端口号来关闭redis后台.
    方式二: redis目录下 ./redis-cli shutdown

    卸载服务:redis-server --service-uninstall
    
    • 1

    连接redis服务命令:

    本地启动:redis-cli
    远程启动:redis-cli -h host -p port -a password
    
    • 1
    • 2

    输入shutdown 便成未连接状态,输入exit退出

    redis数据类型

    redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
    Redis支持多种类型的数据结构,五种基本数据类型:字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询;三种特殊数据类型:bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。

    String

    Redis自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型。string 是 redis 最基本的类型,string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
    这是最简单Redis类型。如果你只用这种类型,Redis就像一个可以持久化的memcached服务器(注:memcache的数据仅保存在内存中,服务器重启后,数据将丢失)。

    我们用redis-cli来玩一下字符串类型:

    > set mykey somevalue
    OK
    > get mykey
    "somevalue"
    
    • 1
    • 2
    • 3
    • 4
    set key value : #设置key-value
    
    get key :#获取key的value
    
    exists key  #key是否存在
    
    getset key value :为key设置新value,并返回key的旧value
    
    mget key1 key2 key3.... :获取一个或多个key的value
    
    setnx key value :key不存在时设置key的value
    
    setex key seconds value :将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
    
    strlen key :返回key所存储的字符串的长度
    
    mset key1 value1 key2 value2 .... :同时设置一个或多个key-value
    
    incr key :将key中存储的数字值增加1
    
    decr key :将key中存储的数字值减1
    
    incrby key increment :将key所存储的值加上给定的增量值increment
    
    append key value :如果key存储的值是一个字符串,append命令将指定的value追加到key原来bvalue的末尾。#追加字符串,若key不存,相当于set key value
    
    • 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

    Hash

    hash 是一个键值(key=>value)对集合。 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

    hset key field value [field value] :存放指定key的field和value值
    
    hdel key filed1 field2 :删除一个或多个哈希表字段
    
    hexists key field :查看哈希表key中,指定的字段是否存在
    
    hget key field :获取存储在哈希表中指定字段的值
    
    hincrby key field increment :为哈希表key中指定的字段的整数值加上增量increment
    
    hlen key :获取哈希表中字段的数量
    
    hkeys key :获取所有哈希表中的字段
    
    hvals key :获取哈希表中所有的值
    
    hgetall key :获取在哈希表中指定key的所有字段和值
    
    hmget key field1 field2 :获取所有给定字段的值
    
    hmset key field1 value1 field2 value3 ....... :同时将多个field-value(域-值)对设置到哈希表key中
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    List

    有序、可重复。C 语言本身没有链表这个数据结构的,所以 Redis 自己设计了一个链表数据结构。
    list(列表)简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

    llen key :获取哈希表中所有的值获取列表长度
    
    lpop key :#移除列表头部第一个值(左)
    
    lpush key value1 value2... :#将一个值或多个值插入列表的头部()
    
    lpushx key value :将一个值插入到已存在的列表的头部
    
    lrange key 0 -1 获取指定范围内的元素
    
    lrem key count value :移除列表中count个与参数value相等的元素。 count > 0 :从表头到表尾 count=0 :移除所有
    
    lset key index value :通过索引(下标)设置列表元素的值
    
    ltrim key 0 6 :对一个列表进行修剪 让列表只保留指定区间内的元素,不在指定区间的元素都将被删除
    
    rpop key :#移除列表尾部第一个值(右)
    
    rpoplpush :列表 列表 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
    
    rpush key v1 v2 ...  #将一个值或多个值插入列表的尾部()
    
    rpushx key value :为已存在的列表添加值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    Set

    set 无序,不重复。是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。内部实现是一个 value为null的Hash(key是唯一的 保证了不重复),实际就是通过计算hash的方式来快速排重的。

    set 是 string 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
    
    sadd key member1 menber2...:向集合添加一个或多个成员
    
    scard key :获取集合的成员数
    
    smembers key :#查看指定set中所用元素
    
    sdlff key1 key2 :返回第一个集合和第二个集合(其他集合)之间的差异
    
    sinter key1 key2 :#获取多个set交集 (共同好友、共同关注)
    
    sunion key1 key2  :返回所有给定集合的并集
    
    sismember key member :判断member元素是否是集合key的成员
    
    smove source destination member :将member元素从source集合移动到 destination集合
    
    spop key :移除并返回集合中的一个随机元素
    
    srandmember key :数字 返回集合中一个或多个随机数
    
    srem key member1 ..... :移除集合中一个或多个成员
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    Zset

    zset(有序集合)有序集合,在set的基础上增加了一个排序的值。
    是 string 类型的有序集合。zset的成员是唯一的,但分数(score)却可以重复。

    zset集合和无序集合一样都是string类型元素的集合,且不允许重复的成员。
    
    不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
    
    有序集合的成员是唯一的,但分数(score)却可以重复。
    
    zadd key score1 member1 【score2 member2】 :向有序集合添加一个或多个成员,或者更新已经存在的分数
    
    zcard key :获取有序集合的成员数
    
    zcount key min max :计算在有序集合中指定区间分数的成员数
    
    zrange key start stop withscores :通过索引区间返回有序集合指定区间内的成员
    
    zrevrangebyscore key max min withscores :返回有序集合中指定分数区间内的成员,分数从高到低排序
    
    zscore key member :返回有序集合中,成员的分数值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    geospatial

    地理位置 (定位、附近的人、打车距离……)

    redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
    (integer) 2
    redis> GEODIST Sicily Palermo Catania
    "166274.15156960039"
    redis> GEORADIUS Sicily 15 37 100 km
    1) "Catania"
    redis> GEORADIUS Sicily 15 37 200 km
    1) "Palermo"
    2) "Catania"
    redis> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    #geoadd 添加地理位置规则:两极无法直接加入,通常通过java一次性导入  有效经度:-180180  有效纬度:-85.0511287885.05112878
    geoadd china:city 121.47 31.23 shanghai
    geoadd china:city 106.50 29.53 chongqing  114.05 22.52 shenzhen 120.16 30.24 hangzhou 108.96 34.26 xian
    #geopop 获取指定成员的经度和纬度GEOPOS china:city chongqing beijin
    #geodist 查看成员间的的直线距离GEODIST china:city beijin shanghai km
    #georadius 以给定经纬度为中心,找出某一半径内的元素(附件的人)GEORADIUS china:city 110 30 1000 kmGEORADIUS china:city 110 30 1000 km withdist withcoord count 2 (withdist 显示直线距离  withcoord 显示经纬度  count  显示几条)
    #georadiusbymember 以给定成员为中心,找出某一半径内的元素georadiusbymember china:city beijing 1000 km withdist withcoord count 2 (withdist 显示直线距离  withcoord 显示经纬度  count  显示几条)
    #geohash 返回一个或多个位置元素的geohash表示  将二维的经纬度转换成一维的11位字符串 如果两个字符串越接近,则距离越近。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    hyperloglog

    基数 (不重复的元素个数) 标准误差小于1%。
    HyperLogLog是一种概率数据结构,用于计算唯一事物(从技术上讲,这是指估计集合的基数)。该算法的神奇之处在于,不再需要使用与计数的项目数成比例的内存量,而是可以使用恒定的内存量!在最坏的情况下是12k字节,如果你的HyperLogLog(我们现在只称其为HLL)看到的元素很少,则会少很多。

    PFadd key element  #创建一组元素
    PFcount key   #统计元素基数
    pfmerge key3 key1 key2   #合并两组key1 key2 => key3  并集
    
    • 1
    • 2
    • 3
      > pfadd hll a b c d
      (integer) 1
      > pfcount hll
      (integer) 4
    
    • 1
    • 2
    • 3
    • 4

    bitmaps

    位存储。
    各种实时分析。存储与对象ID相关的节省空间但高性能的布尔信息。
    统计用户信息 活跃 不活跃 登录 未登录 打卡
    两个状态的 都可以使用bitmaps
    bitmaps位图数据结构,都是操作二进制位来进行记录的,非0即1

    setbit key offset value  #设置位图
    getbit key offset        #获取指定位图的值
    bitcount key     #统计数量
    -----------例如 一周打卡   0为打卡 1打卡
    127.0.0.1:6379> SETBIT sign 0 1(integer) 0
    127.0.0.1:6379> SETBIT sign 1 0(integer) 0
    127.0.0.1:6379> SETBIT sign 2 1(integer) 0
    127.0.0.1:6379> SETBIT sign 3 0(integer) 0
    127.0.0.1:6379> SETBIT sign 4 0(integer) 0
    127.0.0.1:6379> SETBIT sign 5 0(integer) 0
    127.0.0.1:6379> SETBIT sign 6 1(integer) 0
    127.0.0.1:6379> GETBIT sign 0(integer) 1
    127.0.0.1:6379> BITCOUNT sign(integer) 3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    > setbit key 0 1
    (integer) 0
    > setbit key 100 1
    (integer) 0
    > bitcount key
    (integer) 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    keys命令:

    keys * :查询所有的key
    
    del key :key存在时删除key
    
    exists key :检查key是否存在
    
    expire key seconds() :为key设置过期时间,以秒计算
    
    persist key :移除key的过期时间,key将持久保持
    
    ttl key :以秒为单位返回key的剩余过期时间
    
    randomkey :从当前数据库中随机返回一个key
    
    rename key newkey :修改key的名称
    
    move key db :将当前数据库的key移动到给定的数据库db当中
    
    type key :返回key所存储值的类型
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    【LeetCode】最大连续 1 的个数
    hass配置多个局域网设备主动发现
    GO实现Redis:GO实现Redis的AOF持久化(4)
    UE Select File / Folder Window 插件说明
    Python 解释器配置需要注意什么?
    计算机网络 第五层 应用层
    vue3学习(三)--- computed计算属性
    近红外二区AgzS量子点包裹脱氧核糖核酸DNA|DNA-AgzSQDs(齐岳)
    【右击打开cmd】
    001从零开始入门Entity Framework Core——基础知识
  • 原文地址:https://blog.csdn.net/u012451600/article/details/126135597