redis常用数据结构

Redis实战

数据类型及操作

String

1.set 设置值: set name HongWan

2.setnx 如果key存在返回0,不修改。key不存在,新建一个

3.setex设置存活时间。setex haircolor 10 red ,10为存活时间10s

4.setrange设置指定key的子字符串。set num 1234567890

setrange num 3 1234 ===> get num == > 1231234

从下标3的位置开始替换。

5.mset:一次设置多个值。失败会回滚,所有的都设置失败。

6.msetnx:一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置,但是不会覆盖已经存在的 key。

7.get 获取值

8.getset 设置key的值,并返回旧值。如果不存在,返回nil

9、getrange: 获取key的value值的子字符串:getrange name 0 6

获取下标0到6的值,取得到6,开区间。当下标超出字符串长度时,默认同方向最大下标。

10.mget、一次获取多个key值。如果不存在,返回nil

11.incr :对key的值进行加1操作。注意 incr 一个不是 int 的 value 会返回错误,incr 一个不存在的 key,则设置 key 为 1。例 incr age

  1. incrby:同 incr 类似,加指定值。例incrby age 5(将age加5)
  2. decr:对key的值减1。
  3. decrby:减指定值
  4. append:给指定的key的值追加value,返回新的字符串值的长度。append name 123123
  5. strlen 去指定key的value值的长度。get name ==> HongWan strlen name ==> 7

hashes类型及操作

​ 1、hset 设置hash field为指定值。hset myhash field1 Hello

​ 2、hsetnx 设置 hash field为指定值,如果key不存在,则先创建。如果field存在,返回0。创建失败

​ 3、hmset 同时设置hash的多个field。hmset myhash field1 1 field2 2

​ 4、hget 获取指定的hash field,若field没有,返回nil 。hget myhash field1

​ 5、hmget 获取全部制定的hash filed。hmget myhash field1 field2 field3

​ 6、hincrby 指定的hash filed 加上给定值。

​ hset myhash field1 10

​ hincrby myhash field1 -2

​ hget myhash field1 ==> 8。

​ 如果hash field的值不可转化为整数。则会报(error) ERR hash value is not an integer

​ 7、测试指定的field是否存在。hexists myhash field1。存在为1,不存在为0

​ 8、hlen 返回指定hash的field数量。hlen myhash

​ 9、hdel 删除指定的hash field。hdel myhash field1。返回指定的hash的field数量

​ 10、hkeys 返回hash的所有field。

​ 11、hvals 返回hash的所有value

​ 12、hgetall 获取某个hash中全部的field及value,可以将field以及value全部取出来

lists类型及操作

​ list 链表结构。实质是一个双向链表

​ 1、lpush 在key对应list的头部添加字符串元素。lpush mylist ‘hello’

​ 2、rpush 在key对应list的尾部添加字符串元素。rpush mylist2 ‘world’

​ 3、linsert 在key对应list的特定位置之前或之后添加字符串元素。rpush mylist3 ‘hello’ ===> linsert mylist3 before ‘world’ ‘there’ 在world前增加there

​ 4、lset 设置lisy中指定下标的元素值。下标从0开始。rpush mylist4 ‘hello’ ===> lset mylist4 0 ‘hi’

​ 5、lrem 从key对一个list中删除count个和value相同的元素。

​ count >0 时,按从头到尾的顺序删除。

​ count < 0 时,按从尾到头的顺序删除。

​ count = 0 时,删除全部

​ 6、ltrim 保留指定key的值范围内的数据。

​ 7、lrange 查询指定范围的值。lrange mylist 0 -1 查询全部

​ 8、lpop 从list的头部删除元素,并返回删除元素。

​ 9、rpop 从list的尾部删除元素,并返回删除元素。

​ 10、rpoplpush 从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值。整个操作时原子的。如果第一个list是空或者不存在返回nil

​ 11、lindex 返回名称为key的list中index位置的元素。

​ 12、llen 返回key对应list的长度。

sets类型及操作

​ 1、set 的是通过 hash table 实现的,所以添加、删除和查找的复杂度都是 O(1)。

​ 2、sadd 向名称为key的set中添加元素。sadd myset ‘hello’。

​ 添加重复的元素,添加不成功,会返回0。

​ 3、smembers 查看set中所有元素。smembers myset

​ 4、srem删除名称为key的set中的元素member。srem myset ‘hello’

​ 删除成功返回1,失败为0.

​ 5、spop 随机返回并删除名称为key的set中一个元素。spop myset 会随机删除其中的元素。

​ 6、sdiff 返回所有给定key与第一个key的差集。

​ 例: smembers myset2 ===> ‘three’ ‘two’ 。

​ smembers myset3 ===> ‘two’ ‘one’。

​ sdiff myset2 myset3 ===>

​ ‘three’

​ myset2 中于myset3中不同的是three 所以只返回了three 而不是three 和one

​ 7、sdiffstore 返回所有给定key与第一个key的差集,并将结果存为另一个key

​ sdiffstore myset4 myset2 myset3 会将myset2中的与myset3的差异元素,返回给myset4

​ 8、sinter 返回所有给定key的交集。sinter myset2 myset3 ==> ‘two’

​ 9、sinterstore 返回所有给定key的交集。sinterstore myset5 myset2 myset3 会把交集赋值给myset5

​ 10、sunion 返回所有给定key的并集 sunion myset2 myset3 ==> ‘three’,‘one’,‘two’

​ 11、sunionstore 返回所有给定key的并集,并将结果存为另一个key sunionstore myset6 myset2 myset3

​ 12、smove 从第一个key对应的set中移除member并添加到第二个对应set中

​ smove myset2 myset5 two

​ 13、scard 返回名称为key的元素个数 scard myset2

​ 14、sismember 测试member是否是名称为key的set的元素。 sismember myset2 two

​ 15、srandmember 随机返回名称为key的set的一个元素,但是不删除元素。

​ srandmember myset2

sorted sets类型及操作

​ 1、zadd 向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则通过权重更新元素的顺序。zadd myzset 1 ‘one’ 。数字越小,越靠前

​ 2、zrange 查看key对应的元素。加上withscores可以显示权重。

​ zrange myzset 0 -1 withscores 显示全部元素和对应的权重。

​ 3、zrem 删除名称为key的zset中的元素member。 zrem myzset two

​ 4、zrank 返回名称为key的zset中member元素的排名,按照score从小到大排序。返回的是下标,从0开始。不是score。zrank myzset3 two

​ 5、zrevrank 返回key对应元素的排名,按照score从大到小的顺序。取得仍旧是下标。

​ 6、zrevrange 返回名称为key的zset按照score从大到小的排序中的index从start到end的所有元素。zrevrange myset3 0 -1 withscores myset3的所有元素和权重

​ 7、zrangebyscore 返回集合中score在给定区间的元素。zrangebyscore myzset3 2 3 withscores 返回score在2 - 3区间的元素。

​ 8、 zcount 返回集合中score 在给定区间的数量。zcount myzset3 2 3 计算score 在2 ~ 3之间的元素数目。

​ 9、zcard 返回集合中元素个数。zcard myzset3 返回数量。

​ 10、zscore 返回给定元素对应的score 。 zscore myzset3 two 取出two对应的权重。

​ 11、zremrangebyrank 删除集合中排名在给定区间中的元素。

​ zremrangebyrank myzset3 3 3 删除从小到大排序 下标为3的元素

​ 12、zremrangebyscore 删除集合中score在给定区间的元素。

​ zremrangebyscore myzset3 1 2 删除score在 1~2 之间的元素删除了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值