redis的数据结构

redis数据结构

1. 五种数据类型:常用的是字符串和哈希
1. 字符串(String)
2. 哈希(hash)
3. 字符串列表(list)
4. 字符串集合(set)
5. 有序字符串集合(sorted set)
2. redis的存储数据是以键值对的形式
key定义的注意点:
1. 不要过长
2. 不要过短
3. 统一的命名规范
3. 存储String
1. 二进制安全的,存入和获取的数据相同
2. value最多可以容纳的数据长度是512M
3.  存储String常用命令
	1. 赋值 :set ,get,getset
	2. 删除:del
	3. 扩展命令decrby,appand(拼凑字符串,在原有的后面衔接,如果没有新建)
	4. 取值
	5. 数值增减::incr(递增,加1),decr(递减,减1,将指定的value值递减1,如果值不存在,就会把初始值设置为0,decr之后,这个值就变为1,如果value值不能转换成整型,会报错误信息),incrby(指定变化的数值),
4. 存储哈希
1. String Key和String Value 的map 容器(适合存储值对象的信息,例如用户名、密码、年龄等。。。,如果只有非常少的字段,也会占有非常少的磁盘空间)
2. 每一个Hash可以存储4294967295个键值对
3. 存储Hash常用命令
	1. 赋值:hset,hmset
	2. 删除:hdel,
	3. 自学命令:hexists(是否存在),hlen(获取属性个数),Hkeys(所有属性名称),Hvals(获取所有值)
	4. 取值:hget,hgetall
	5. 增加数字:hincrby
5. 存储list:链表
1. Arraylist使用数组方式
2. LinkList使用双向链接当时
3. 双向链表中增加数据
4. 双向链表中删除数据
5. 存储list常用命令
		1. 两端添加:lpush,rpush
		2. 查看列表:lrange
		3. 两端弹出:lpop,rpop
		4. 获取列表元素个数:llen
		5. 扩展命令:lpushx(链表存在插入头部),rpushx,lrem(删除元素,如果count大于0,删除count个为value的值,count小于0,从后面向前面遍历,count等于0,删除所有等于value的元素),lset(在某个index插入具体值),linsert(在某个元素前后插入内容,before,after),rpoplpush(将链表中的尾部元素弹出并添加到头部)
	6. redis链表常用于消息队列的一些服务,来完成多个程序之间的消息交互,若正在执行lpush---为生产者,lpop--消费者,取出未使用就容易导致业务数据丢失或者业务状态的不一致,可以同过rpoplpush命令,消费者程序在主消息队列中取出元素之后,再将它插入到一个备份的队列当中,直到消费者完整正常的逻辑处理后,再讲消息从备份队列中删除,这样可以提供一个守护的线程,当发现备份中过期,便放到主队列中,以备后续其他进行使用和处理

6. 存储set

1. 和list类型不同的是,set集合不允许出现重复的元素
2. 在服务器端完成多个集合之间的聚合操作,提高了效率
3. set可包含的最大元素数量是4294967295
4. 常用命令
	1. 添加/删除元素:sadd,srem,
	2. 获取集合中的元素:smembers(有哪些数字),sismember(是否存在数字)
	3. 集合中的差集运算:sdiff
	4. 集合中的交集运算:sinter
	5. 集合中的并集运算:sunion
	6. 扩展命令:scard(获得set中的成员数量),srandmember(随机的成员),sdiffstore(将相差的值存储),sinterstore(将交集存储),sunionstore(将并集存储)
5. redis的set应用场景:
		*  跟踪一些具有唯一性的数据 * ,例如博客的IP,存储到set中,保证唯一性,服务器端聚合操作方便高效,可以 * 用于维护数据对象之间的关联关系 *,例如所有购买电子设备的客户的ID,被存储到一个指定的set当中,购买另外一种的ID,存储另外一个set中,为了获取同事购买两种的用户,可以使用交集
7. 存储sorted-set
  1. sorted-set和set的区别: sorted带有分数
  2. sorted-set中的成员在集合中的位置是有序的:主要应用在游戏的排名上,微博的热搜上
  3. 常用命令:
    1. 添加元素:zadd
    2. 获取元素:zscore(获取分数),zcard(成员数量)
    3. 删除元素:zrem
    4. 范围查询:zrange,zreange–withscores(带分数),zrerange(颠倒显示),zremrangebyrank(按照排名的范围进行删除),zrangebyscore
    5. 扩展命令:zincreby,zscore,zcount
  4. 使用场景:用于在线游戏的积分,使用zadd—zcount
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章