3.redis数据类型和常用命令

redis数据类型介绍

你也许已经知道Redis并不是简单的key-value存储,实际上他是一个数据结构服务器,支持不同类型的值。也就是说,你不必仅仅把字符串当作键所指向的值。下列这些数据类型都可作为值类型:

  1. Strings(字符串):二进制安全的字符串,意味着redis的string可以包含任何数据。比如jpg图片或者序列化的对象。一个键最多能存储512MB。二进制安全是指,在传输数据的时候,能保证二进制数据的信息安全,也就是不会被篡改、破译;如果被攻击,能够及时检测出来。

  2. Lists(列表):按插入顺序排序的字符串元素的集合。他们基本上就是链表(linked lists)。你可以一个元素到列表的头部(左边),或者添加一个元素到尾部(右边)。

  3. Sets(无序集合):不重复且无序的字符串元素的集合

  4. Sorted sets(有序集合):不重复且有序的字符串元素的集合。类似Sets,但是每个字符串元素都关联到一个叫score浮动数值(floating number value)。里面的元素总是通过score进行着排序,所以不同的是,它是可以检索的一系列元素。Sorted sets的元素是唯一的,但是score是可以重复的

  5. Hashes(哈希):由field和关联的value组成的map,field和value都是字符串的。是一个键值对集合,特别适用于存储对象。
    Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如”foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值。

    关于key的几条规则:

  • key不要太长。例如1024字节的键值就不是个好主意,不仅因为消耗内存,而且在数据中查找这类键值的计算成本很高。
  • key也不要太短,要见名知意。比如你要用“u:1000:pwd”来代替“user:1000:password”,这没有什么问题,但后者更易阅读,并且由此增加的空间消耗相对于key object和value object本身来说很小。当然,没人阻止您一定要用更短的键值节省一丁点儿空间。
  • 使用统一的命名规则。例如:”object-type:username:field”就是个很不错的主意,见名知意。
  • key区分大小写。例如:"user:password"和"user:PASSWORD"是两个不同的key。

redis数据类型常见的操作命令

在练习常用命令之前先启动redis-cli客户端,如何启动redis-cli客户端,参考:https://blog.csdn.net/guachiqi2340/article/details/109269400
或者使用在线redis测试工具,地址:https://try.redis.io/
注:在redis里,执行指令返回结果中,0表示否,1表示是。

  • Strings常用命令:

    • set key value:设置指定key的值,示例:set key1 value1
    • setex key seconds value:给指定的key设置value,并设置key的过期时间,单位秒,(set with expire)示例:setex name 5 zhagnsan
    • setnx key value:当key不存在时设置key的值。(set if not exists),分布式锁的问题,示例:setnx key2 helloworld
    • append key value:追加指定key的值,示例:append key1 hello
    • get key:获取指定key的值,示例:get key1
    • getrange key start end:获取key中指定范围的value值,end为-1时,表示从start位置到value值的最后一个字符串,示例:getrange key1 0 3
    • setrange key offset value:替换key中指定offset偏移量的值,示例:setrange key1 5 kitty
    • strlen key:返回key所存储的字符串值的长度,示例:strlen key1
    • del key:删除指定的key,示例:del key1
    • incr key:如果key指定的值是integer类型,则值自增1,示例:incr key1
    • decr key:如果key指定的值是integer类型,则值自减1,示例:decr key1
    • incrby key number:如果key指定的值是integer类型,则值自增number个数值,示例:incrby key1 5
    • decrby key number:如果key指定的值是integer类型,则值自减number个数值,示例:incrby key1 5
    • mset key value [key value …]:批量设置多个key和值,示例:mset a1 b1 a2 b2
    • mget key value [key value …]:批量获取多个key的值,示例:mget a1 a2
    • getset key value:先get再set,示例:getset name lisi
  • Lists常用命令:

    • lpush key element [element …] :给列表指定的key在头部(左边)设置多个元素,示例:lpush numbers 1 2 3 4 5
    • rpush key element [element …] :给列表指定的key在尾部(右边)设置多个元素,示例:rpush numbers1 a b c d e
    • lrange key start stop:获取key指定范围内的元素,stop为-1时,表示从start位置开始一直到list的最后一个元素,示例:lrange numbers 1 3
    • lpop key:弹出指定key头元素,即左边第一个元素,示例:lpop numbers
    • rpop key:弹出指定key:尾元素,即右边第一个元素,示例:rpop numbers
    • lindex key index:根据索引下标获得指定key的元素,示例:lindex numbers 1
    • llen key:获取指定key元素的个数,示例:llen numbers
    • lrem key count element:
  • Sets常用命令:

    • sadd key member [member …]:给指定的key添加多个不重复的元素,示例:sadd set1 1 2 3 4
    • smembers key:查看指定key元素,示例:smembers set1
    • sismember key member:判断指定的key是否存在指定的值,示例:sismember set1 2
    • scard key:获取集合指定key元素的个数,示例:scard set1
    • srem key member [member …]:删除集合中指定key的元素,示例:srem set1 1 2
    • srandmember key [count]:随机获取集合中指定key的count个值,count默认为:1,示例:srandmember set1 2
    • spop key [count]:出栈count个指定key的值,示例:spop set1 2
    • smove source destination member:将source的member元素移动到destination去,示例:smove set1 set2 3
    • sdiff key [key …]:返回指定key的元素与其他多个key的差集,示例:sdiff set1 set2
    • sinter key [key …]:返回指定key的元素与其他多个key的交集,示例:sinter set1 set2
    • sunion key [key …]:返回指定key的元素与其他多个key的并集,示例:sunion set1 set2
  • Sort Sets常用命令:

    • zadd key score member [score member …] :给指定的key添加多个不重复的元素,score用于元素的排序,示例:zadd zset1 10 b 20 a 30 e 40 c 50 d
    • zrange key start stop [WITHSCORES]:查询从start到stop区间指定key的元素(顺序),stop为-1时,表示从start开始到最后一个元素,可选参数WITHSCORES表示带score显示,示例:zrange zset1 0 -1 withscores
    • zrevrange key start stop [WITHSCORES]:查询从start到stop区间指定key的元素(逆序),stop为-1时,表示从start开始到最后一个元素,可选参数WITHSCORES表示带score显示,示例:zrevrange zset1 0 -1 withscores
    • zrangebyscore key min max [WITHSCORES] [LIMIT offset count]:查询从min到max区间的score值的指定key的元素(顺序),可选参数WITHSCORES表示带score显示,可选参数LIMIT offset count用于分页显示,示例:zrangebyscore zset1 21 50 withscores
    • zrevrangebyscore key min max [WITHSCORES] [LIMIT offset count]:查询从min到max区间的score值的指定key的元素(逆序),可选参数WITHSCORES表示带score显示,可选参数LIMIT offset count用于分页显示,示例:zrangebyscore zset1 21 50 withscores
    • zrem key member [member …]:移除集合指定key的一个或者多个元素,示例:zrem zset1 e a
    • zcard key:返回集合指定key元素的个数,示例:zcard zset1
    • zcount key min max:返回集合指定key元素在min和max的score区间的个数,示例:zcount zset1 31 50
    • zrank key member:返回集合指定key的member元素的下标(通过score顺序排序),示例:zrank zset1 d
    • zrevrank key member:返回集合指定key的member元素的下标(通过score逆序排序),示例:zrevrank zset1 d
  • Hashes常用命令:

    • hset key field value [field value …]:给指定的key设置一个或多个K-V键值对,示例:hset user name zhangsan age 30 hight 170
    • hsetnx key field value:如果指定的field还没存在,则给指定的key设置一个K-V键值对,示例:hsetnx user weight 110
    • hget key field:获取指定key的field字段的值,示例:hget user name
    • hmset key field value [field value …]:等价于hset,给指定的key设置一个或多个K-V键值对,示例:hmset user name zhangsan age 30 hight 170
    • hmget key field [field …]:获取指定key的一个或多个field指定的值,示例:hmget user name age hight
    • hgetall key:返回指定key的所有K-V键值对,示例:hgetall user
    • hdel key field [field …]:删除指定key的一个或者多个K-V键值对,示例:hdel user name age
    • hlen key:返回指定key的K-V键值对的个数,示例:hlen user
    • hexists key field:判断指定key的field是否存在,示例:hexists user hight
    • hkeys key:返回key指定的所有field,示例:hkeys user
    • hvals key:返回key指定的所有field对应的值,示例:hvals user
    • hincrby key field increment:给指定的key的field的值进行自增increment数量,前提是field指定的值是integer类型的,示例:hincrby user age 5
    • hincrbyfloat key field increment:给指定的key的field的值进行自增increment数量,示例:hincrbyfloat user money 11.11
  • 其它常用命令:

    • select index,切换数据库,index为redis数据库的索引下标,下标从0开始,默认16个库
    • keys pattern:查看当前库的所有key,pattern支持正则表达式,示例:keys *
    • exists key [key …]:判断当前库中是否存在指定的key,示例:exists set1
    • move key dbindex:将当前库指定的key移动到dbindex指定下标的数据库,示例:move user 1
    • expire key seconds,给指定的key设置过期时间,单位秒,示例:expire set1 5
    • ttl key:查看指定的key还剩下多少过期时间,单位秒,-1表示永不过期,-2表示已过期,其他值表示剩下过期的时长,示例:ttl set2
    • type key:查看指定key的类型,示例:type set2
    • dbsize:查看当前数据库key的数量
    • flushdb:清空当前数据库
    • flushall:清空所有数据库




注:转载请注明出处,转载地址:https://blog.csdn.net/guachiqi2340/article/details/109345300

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NPException.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值