Redis(六)——6种基本类型

Redis(六)——6种基本类型

1、String类型(字符串)

--1、String是二进制安全的,意味着string可以包含任何数据。图片保存成
--2、Redis的string的value值最大是512M
--3、set命令添加键值对,同一个key进行赋值,会覆盖
set <key> <value>
--4、获取键值对的值
get <key>
--5、追加,返回value的总长度
append <key> <value>
--6、等到值的长度
strlen <key>
--7、key不存在的时候才能进行赋值
setnx <key> <value>
--8、存的数字值自动+1
incr <key>
--9、存的数字自动—1
decr <key>
--10、设置步长进行加减
incrby/decrby <key> <步长>
--11、同时设置多个key-value的键值对
mset <key1> <value1> <key2> <value2>......
--12、同时取多个值
mget <key1> <key2>......
--13、同时设置多个key-value当key不存在的时候,当有一个key存在的时候,就不成功,要想成功,key就得都不存在
msetnx <key1><value1> <key2><value2>
--14、获取范围的值
get range <key> <起始位置> <结束位置>
--15、用<value>覆写<key>所存储的字符串,从<起始位置>开始(索引从0开始)
setrange <key> <起始位置> <value>
--16、创建key-value的时候设置过期时间
setex <key> <过期时间> <value>
--17、用新值换旧值
getset <key> <value>
设置新值,返回的是旧值

2、List列表

--1、单键多值
<key1> <value1> <value2> <value3>
--2、从左边存入值
lpush <k1> <v1> <v2>
--获取值
lrange <k1> index1 index2
--3、从右边存入
rpush <k1> <v1> <v2>
--4、从左边/右边取出一个值,值在键在,值光键亡
lpop/rpop <key>
--5、从k1的右边拿出一个值放到k2的左边
rpoplpush <k1> <k2>
--6、取值,0表示左边第一个,-1表示右边第一个
lrange <k1> index1 index2
--例子:取出全部
lrange k1 0 -1
--7、按照索引从左到右的取值,取出的值还会在key里
lindex <k1> <index> 
--例子:取出第二个值
lindex k1 1
--8、获取列表的长度
llen <key>
--9、在某个值的前面/后面插入值
linsert <key> before/after <value> <newvalue>
--例子:
linsert k1 before v12 v1
--10、从左边删除n个特定的value
lrem <key> <n> <value>
--11、替换:将下标为index的值替换成value
lset <key> <index> <value>
--12、list的底层数据结构:
--list的数据结构为快速链表,quicklist

3、Set集合
set 集合是string类型的无序集合,它的底层是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)

--1、添加键值对
sadd <key> <value>
--2、获取值
smembers <key>
--3、判断一个值是不是存在,返回1就有,返回0就代表没有
sismember <key> <value>
--4键值对的长度
scard <key>
--5、删除键中的指定的值
srem <key> <value1> <value2> ...
--6、随机取出一个值,值取光的时候,key也就不存在了,
spop <key>
--7、随机取出n个值,但不会删掉
srandmember <key> n
--8把一个value从一个键移动到另一个键中
smove <key1> <key2> value
--例子:将v3 从k1移动到k3中
smove k1 k2 v3
--9、取两个集合的交集
sinter <key1> <key2>
--10、取并集
sunion <key1> <key2>
--11、差集,key1在key2中没有的
sdiff <key1> <key2>

4、Hash集合
redis hash 是一个string类型的field 和value的映射表,hash特别合适用于存储对象

--1、添加键值对,给key集合中的field键赋值
hset <key> <field> <value>
--例子:
hset user:1001 name zhangsan

--2、取值,从集合key中的<field>取出value
hget <key1> <field> 
--例子
hget user:1001 name

--3、批量存入数据
hmset <key1> <field1> <vaue1> <field2> <value2>...
--例子:
hmset user:1002 name lisi age 24

--4、查看哈希表key中,给定域field是否存在
hexists <key1> <field1> 
--例子:返回1代表存在,返回0代表不存在
hexists user:1002 name

--5、查看hash集合中的所有field
hkeys <key>
--例子:
hkeys user:1002

--6、在hash表key中的域field增加量n
hincrby <key> <filed> n
--例子:
hincrby user:1002 age 2

--7、将hash表key中的field域的值设置为value,当且仅当field不存在。
hsetnx <key> <field> <value>
--例子1:,返回0,表示没有成功
hsetnx user:1002 name wangwu
--例子2:返回1,表示添加成功
hsetnx user:1002 gender 1

6、Redis有序集合Zset
redis 中的有序集合zset域普通集合set非常相似,是一个没有重复元素的字符集合。
不同之处是有序集合的每个成员都关联一个评分(score),这个评分(score)来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的 ,但评分却是可以重复的。

--1、添加键值对
zadd <key> <score1> <value1> <score2> <value2>...
--例子:
zadd k1 100 java 200 c++ 300 mysql 400 redis

--2、取值
zrange <key> <start> <end>
--例子:取出所有值(排名是sore从小到大)
zrange k1 0 -1

--3、取值带评分
zrange <key> <start> <end> withscores
--例子:
zrange k1 0 -1 withscores

--4、按照score的范围取值,包括score是min,max的key
zrangebyscore <key> <min> <max> [withscores]
--例子:
zrangebyscore k1 200 300

--5、取值从大到小排序
zrevrangebyscore <key> <max> <min> [withscores]
--例子:
zrevrangebyscore k1 300 200 withscores

--6、为元素的score加上增量
zincrby <key> <increment> <value>
--例子:
incrby k1 400 java

--7、删除该集合下,指定值的元素
zrem <key> <value>
--例子:
zrem k1 java

--8、统计score在一定范围内的元素数量
zcount <key> <min> <max>
--例子:
zcount k1 100 400

--9、返回在集合中的排名,排名从0开始
zrank <key> <value>
--例子:
zrank k1 mysql

猜你喜欢

转载自blog.csdn.net/zxq6661/article/details/119581453
今日推荐