Redis五种类型存储

1.String操作的命令:

set(key, value):给数据库中名称为key的string赋予值value

 get(key):返回数据库中名称为key的string的value

 getset(key, value):给名称为key的string赋予上一次的value

 mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1,key2…)的value     s

 setnx(key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为value

 setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time

 mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key i的string赋值value i

 msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,则向库中添加string,名称           key i赋值为value i

 incr(key):名称为key的string增1操作

 incrby(key, integer):名称为key的string增加integer

 decr(key):名称为key的string减1操作

 decrby(key, integer):名称为key的string减少integer

 append(key, value):名称为key的string的值附加value

 substr(key, start, end):返回名称为key的string的value的子串
String是最常用的一种数据类型,普通的key/value存储. Demo: 
存: set   name text  
取:get name
2.对List操作的命令:

 rpush(key, value):在名称为key的list尾添加一个值为value的元素  

 lpush(key, value):在名称为key的list头添加一个值为value的 元素

 llen(key):返回名称为key的list的长度

 lrange(key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始,下同)

 ltrim(key, start, end):截取名称为key的list,保留start至end之间的元素

 lindex(key, index):返回名称为key的list中index位置的元素

 lset(key, index, value):给名称为key的list中index位置的元素赋值为value

 lrem(key, count, value):删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0      从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。

 lpop(key):返回并删除名称为key的list中的首元素

 rpop(key):返回并删除名称为key的list中的尾元素

 blpop(key1, key2,… key N, timeout):lpop 命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果 timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对key i+1开始的list执行pop操作。

 brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。

 rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
List操作Demo: 
存: rpush text1 contex    rpush(key, value):在名称为key的list尾添加一个值为value的元素  
取:lrange text 0 3      lrange(key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始,下同)              lrange text 1 3

3.对Set操作的命令:

sadd(key, member):向名称为key的set中添加元素member

 srem(key, member) :删除名称为key的set中的元素member

 spop(key) :随机返回并删除名称为key的set中一个元素  

 smove(srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合

 scard(key) :返回名称为key的set的基数        

 sismember(key, member) :测试member是否是名称为key的set的元素

 sinter(key1, key2,…key N) :求交集

 sinterstore(dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合

 sunion(key1, key2,…key N) :求并集

 sunionstore(dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合

 sdiff(key1, key2,…key N) :求差集

 sdiffstore(dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合

 smembers(key) :返回名称为key的set的所有元素

 srandmember(key) :随机返回名称为key的set的一个元素
Set操作Demo: 
存: sadd set sets   sadd(key, member):向名称为key的set中添加元素member
取:smembrs set   smembers(key) :返回名称为key的set的所有元素

4.对zset(sorted set)操作的命令:

 zadd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。

 zrem(key, member) :删除名称为key的zset中的元素member

 zincrby(key, increment, member) :如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

 zrank(key, member) :返回名称为key的zset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

 zrevrank(key, member) :返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

 zrange(key, start, end):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素

 zrevrange(key, start, end):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素

 zrangebyscore(key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素

 zcard(key):返回名称为key的zset的基数

 zscore(key, element):返回名称为key的zset中元素element的score

 zremrangebyrank(key, min, max):删除名称为key的zset中rank >= min且rank <= max的所有元素

 zremrangebyscore(key, min, max) :删除名称为key的zset中score >= min且score <= max的所有元素

 zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):对N个zset求并集和交集,并将最后的集合保存在
ZSet操作Demo: 
存: zadd zset 1 zsets      zadd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
取:zrange zset 0 1   zrange(key, start, end):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素

5.对Hash操作的命令
hset(key, field, value):向名称为key的hash中添加元素field<—>value

 hget(key, field):返回名称为key的hash中field对应的value

 hmget(key, field1, …,field N):返回名称为key的hash中field i对应的value

 hmset(key, field1, value1,…,field N, value N):向名称为key的hash中添加元素field i<—>value i

 hincrby(key, field, integer):将名称为key的hash中field的value增加integer

 hexists(key, field):名称为key的hash中是否存在键为field的域

 hdel(key, field):删除名称为key的hash中键为field的域

 hlen(key):返回名称为key的hash中元素个数

 hkeys(key):返回名称为key的hash中所有键

 hvals(key):返回名称为key的hash中所有键对应的value

 hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value
ZSet操作Demo: 
存: 
hset hash field values hset(key, field, value):向名称为key的hash中添加元素field<—>value
取:hget hash field  hget(key, field):返回名称为key的hash中field对应的value

什么样的类型该用什么存储正在学习ing

Redis五种基础数据类型分别为String、Hash、List、Set和ZSet(Sorted Set),以下是详细介绍: - **String**:Redis自身是Map类型存储,以key:value形式存数据,这里的数据类型指的是value部分的类型,key永远是字符串,它可类比Java的String类型。例如在缓存场景中,可将某个对象的JSON字符串以特定key存储Redis的String类型中,方便快速读取和更新 [^1]。 ```python # 示例:使用Python的redis-py库操作Redis的String类型 import redis # 连接到Redis r = redis.Redis(host='localhost', port=6379, db=0) # 设置一个String类型的值 r.set('my_key', 'Hello, Redis!') # 获取值 value = r.get('my_key') print(value.decode('utf-8')) ``` - **Hash**:可类比Java的HashMap,适合存储对象,将对象的各个属性作为Hash的field,对应的值作为Hash的value。比如存储用户信息,用户ID作为key,用户的姓名、年龄等属性作为field-value对存储在Hash中 [^1]。 ```python # 示例:使用Python的redis-py库操作Redis的Hash类型 import redis r = redis.Redis(host='localhost', port=6379, db=0) # 设置Hash类型的值 r.hset('user:1', 'name', 'John') r.hset('user:1', 'age', 30) # 获取Hash中的值 name = r.hget('user:1', 'name') age = r.hget('user:1', 'age') print(name.decode('utf-8'), int(age)) ``` - **List**:类比Java的LinkList,是一个双向链表结构,可用于实现消息队列、栈等数据结构。例如在消息队列场景中,生产者将消息从List的一端插入,消费者从另一端取出消息进行处理 [^1]。 ```python # 示例:使用Python的redis-py库操作Redis的List类型 import redis r = redis.Redis(host='localhost', port=6379, db=0) # 从左侧插入元素 r.lpush('my_list', 'element1') r.lpush('my_list', 'element2') # 从右侧弹出元素 element = r.rpop('my_list') print(element.decode('utf-8')) ``` - **Set**:类比Java的HashSet,存储不重复的数据,支持集合运算(如交集、并集、差集),适合需要存储不重复数据、进行集合运算以及高效查找元素的场景,在社交网络、实时分析、排行榜、地理位置服务等领域有广泛应用 [^1][^2]。 ```python # 示例:使用Python的redis-py库操作Redis的Set类型 import redis r = redis.Redis(host='localhost', port=6379, db=0) # 向Set中添加元素 r.sadd('my_set', 'element1') r.sadd('my_set', 'element2') # 检查元素是否存在 exists = r.sismember('my_set', 'element1') print(exists) ``` - **ZSet(Sorted Set)**:类比Java的TreeSet,是有序集合,每个元素有一个score(分数),根据score进行排序。常用于排行榜等场景,如游戏的玩家积分排行榜,玩家ID作为元素,积分作为score [^1]。 ```python # 示例:使用Python的redis-py库操作Redis的ZSet类型 import redis r = redis.Redis(host='localhost', port=6379, db=0) # 向ZSet中添加元素 r.zadd('leaderboard', {'player1': 100, 'player2': 200}) # 获取排名 rank = r.zrank('leaderboard', 'player1') print(rank) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值