zoukankan      html  css  js  c++  java
  • Redis五种数据类型

    redis细节

    1、redis启动服务的细节

    直接使用./redis-server方式启动,使用的是redis-server这个shell脚本中默认配置。如果想要改配置文件,需要在源码目录中复制redis-conf配置文件到安装目录,启动时:./redis-server ../redis-conf

    2、redis中库的概念

    database用来存放数据的基本单元,可以放key-value键值对。每一个库都有一个唯一编号,从0开始,默认库的个数为16,库与库之间是隔离的,默认使用0号库,可以在配置文件中配置。使用select index进行切换,比如select 1

    redis客户端显示中文,需要启动时加 redis-cli --raw

    3、redis中清除库的指令

    • flushDB 清空当前库
    • flushall 清空所有库

    常见redis命令

    • keys pattern 查找所有符合给定模式的key,比如*匹配任意多个,?匹配1个,[]匹配[]中的任意一个
    • del key [key...] 删除给定的一个或多个key,不存在的key会被忽略,返回被删除key的数量
    • exists key [key...] 检查给定key是否存在,存在返回1,否则返回0,多个时只要有一个存在就返回1
    • expire key seconds 设置过期时间,默认永久存储,时间为秒
    • move key db 把key移动到指定的库
    • pexpire key milliseconds和expire类似,只是单位为毫秒
    • ttl 剩余过期时间,时间返回为秒,-1表示永久存储,-2表示key不存在,其余表示过期时间
    • pttl 和ttl类似,返回毫秒
    • randomkey 随机返回一个key,如果数据库为空,返回nil
    • rename key newkey 将key改名为newkey,当key和newkey相同或者key不存在时,返回一个错误,如果newkey存在,覆盖值
    • type key 返回key所存储值的类型,none(key不存在),string,list,set,zset,hash

    string类型

    • set 设置一个值
    • get 获取一个值
    • mset 一次设置多个值 mset name zhangsan age 18 bir 2021-12-12
    • mget 一次获取多个值 mget name age bir
    • getset 获取原始key的值,同时设置新值
    • strlen 获得对应key存储value的长度
    • append 为对应key的value追加内容
    • getrange 索引0开始,截取value的内容,不会修改原值。比如 getrange name 2 -1 返回2到末尾的值
    • setex 设置值的时候就设置一个超时时间(秒),比如setex name 10 zhangsan
    • psetex 设置值的时候就设置一个超时时间(毫秒)
    • setnx 存在不做任何操作,不存在添加。成功返回1,否则返回0
    • msetnx 可以同时设置多个key,原子操作(只要有一个key存在,就不做任何操作)
    • decr 自减1
    • decrby 自减给定的值
    • incr 自增
    • incrby 自增给定的值
    • incrbyfloat 增加浮点数,比如 incrbyfloat age 1.3333333344444444444444

    list

    list是有序,可重复的,可以从左边添加元素,也可以从右边添加元素

    • lpush key [value...] 将值加入到一个key的列表头部,比如:lpush lists a b c d e
    • lpushx key value 同lpush,但必须保证key存在,比如: lpushx lists f
    • rpush key [value...] 将值加入到一个key的列表尾部,比如:rpush list g h i j k
    • rpushx key value 同rpush,但必须保证key存在,比如:rpushx list l
    • lpop 返回和移除列表左边的第一个元素,比如: lpop lists 返回 "f"
    • rpop 返回和移除列表右边的第一个元素,比如: rpop lists 返回"a"
    • lrange 获取某一个下标区间内的元素,比如:lrange list 0 -1 表示遍历所有
    • llen 获取列表元素的个数,比如: llen lists
    • lset 设置某一个指定索引的值(索引必须存在),比如: lset list 0 gg
    • lindex 获取某一个指定索引位置的元素,比如: lindex list 0
    • lrem 删除重复元素,比如lrem list 2 gg 表示删除2个gg
    • ltrim 保留列表中特定区间内的元素,会操作原数组,比如 ltrim list 0 2
    • linsert在某一个元素之前,之后插入新元素,重复时从左到右匹配,比如 linsert list before i h

    Set类型

    Set类型也是集合,元素无需,不可以重复

    • sadd: 为集合添加元素, 比如: sadd sets aa bb cc dd ee
    • smembers:显示集合中的所有元素,比如: smembers sets
    • scard:返回集合中元素的个数,比如:scard sets
    • spop:随机返回一个元素,并将元素在集合中删除,比如:spop sets
    • smove:从一个集合中向另一个集合移动元素,比如: smove set1 sets xx
    • srem:从集合中删除一个或多个元素, 比如:srem set1 zz cc
    • sismember:判断一个集合中是否含有这个元素,含有返回1,否则为0,比如 sismember setx aa
    • srandmember:随机返回元素,不会删除,比如:srandmember sets 2
    • sdiff:去掉第一个集合中其他集合含有的相同元素,比如:sdiff sets1 sets2
    • sinter:求交集
    • sunion:求并集

    ZSet类型

    特点:可排序的set集合,可以排序,不可重复。每个元素都带了一个分数,排序是靠分数实现的,又称可排序Set或者SortSet

    • zadd 添加一个有序集合元素,比如 zadd zset1 10 zhangsan 9 xiaochen 8 xiaoming
    • zcard 返回集合的元素个数,比如 zcard zset1
    • zrange 升序 返回一个范围内的元素,比如 zrange zset1 0 -1 withscores 会展示分数
    • zrangebyscore 按照分数查找一个范围内的元素,包含边界,比如 zrangebyscore zset1 9 10 limit 0 1 进行分页
    • zrevrange 降序 返回一个范围内的元素
    • zrank 返回排名,比如 zrank zset1 zhangsan
    • zrevrank 倒序排名,比如 zrevrank zset1 zhangsan
    • zscore 显示一个元素的分数,比如 zscore zset1 zhangsan
    • zrem 移除某一个或多个元素,比如 zrem zset1 zhangsan xiaochen
    • zincrby 给某个元素加分,比如 zincrby zset1 90 xiaoming

    hash类型

    特点:value是一个map结构,存在key-value,key无序

    • hset 设置一个key/value对,比如 hset hash1 name zhangsan
    • hget 获得一个key对应的value,比如 hgge hash1 name
    • hgetall 获得所有的key/value对,比如 hgetall hash1
    • hdel 删除某一个key/value 对,比如 hdel hash1 name height
    • hexists 判断一个key是否存在,比如 hexists hash1 name
    • hkeys 获得所有的key,比如 hkeys hash1
    • hvals 获得所有的value,比如 hvals hash1
    • hmset 设置多个key/value,比如 hmset hash1 bir 2020-12-12 address beijing clazz 2011
    • hmget 获得多个key的value,比如 hmget hash1 name age bir
    • hsetnx 设置一个不存在的key的值,比如 hsetnx hash1 jiguan chq
    • hincrby为value进行加法运算,比如 hincrby hash1 age 100
    • hincrbyfloat 为value加入浮点值,比如 hincrbyfloat hash1 age 1.455555555555555555
  • 相关阅读:
    objectMediator
    vi
    string regex
    ar
    widget class in class
    Makefile 语法分析 第三部分
    在Makefile中的 ".PHONY "是做什么的?
    】openssl移植Android使用及其相关经验分享
    精品Android源码推荐,看了绝不后悔
    Makefile 语法分析 第三部分
  • 原文地址:https://www.cnblogs.com/ginb/p/14471668.html
Copyright © 2011-2022 走看看