字符串类型(string)
-
特点
1、字符串、数字,都会转为字符串来存储
2、以二进制的方式存储在内存中 -
string常用命令
#字符串操作
1、set key value
2、set key value nx
3、get key
3、mset key1 value1 key2 value2
4、mget key1 key2 key3
5、set key value nx ex seconds
6、strlen key
#返回旧值并设置新值(如果键不存在,就创建并赋值)
7、getset key value
#数字操作
8、incrby key 步长
9、decrby key 步长
10、incr key
11、decr key
12、incrbyfloat key number#(可为正数或负数)
#设置过期时间的两种方式
#方式一
1、set key value ex 3
#方式二
1、set key value
2、expire key 5 # 秒
3、pexpire key 5 # 毫秒
#查看存活时间
ttl key
#删除过期
persist key -
string数据类型注意
#key值取值原则
1、key值不宜过长,消耗内存,且在数据中查找这类键值的计算成本高
2、不宜过短,可读性较差
#值
1、一个字符串类型的值最多能存储512M内容
列表数据类型(List)
-
特点
1、元素是字符串类型
2、列表头尾增删快,中间增删慢,增删元素是常态
3、元素可重复
4、最多可包含2^32 -1个元素
5、索引同python列表 -
列表常用命令
#增
1、从列表头部压入元素
LPUSH key value1 value2
2、从列表尾部压入元素
RPUSH key value1 value2
3、从列表src尾部弹出1个元素,压入到列表dst的头部
RPOPLPUSH src dst
4、在列表指定元素后/前插入元素
LINSERT key after|before value newvalue
#查
5、查看列表中元素
LRANGE key start stop
#查看列表中所有元素: LRANGE key 0 -1
6、获取列表长度
LLEN key
#删
7、从列表头部弹出1个元素
LPOP key
8、从列表尾部弹出1个元素
RPOP key
9、列表头部,阻塞弹出,列表为空时阻塞
BLPOP key timeout
10、列表尾部,阻塞弹出,列表为空时阻塞
BRPOP key timeout
#关于BLPOP 和 BRPOP
1、如果弹出的列表不存在或者为空,就会阻塞
2、超时时间设置为0,就是永久阻塞,直到有数据可以弹出
3、如果多个客户端阻塞再同一个列表上,使用First In First Service原则,先到先服务
11、删除指定元素
LREM key count value
count>0:表示从头部开始向表尾搜索,移除与value相等的元素,数量为count
count<0:表示从尾部开始向表头搜索,移除与value相等的元素,数量为count
count=0:移除表中所有与value相等的值
12、保留指定范围内的元素
LTRIM key start stop
LRTIM mylist1 0 2 # 只保留前3条
#应用场景: 保存微博评论最后500条
LTRIM weibo:comments 0 499
#改
13、LSET key index newvalue
散列数据类型(Hash)
-
定义
1、由field和关联的value组成的键值对
2、field和value是字符串类型
3、一个hash中最多包含2^32-1个键值对 -
优点
1、节约内存空间
2、每创建一个键,它都会为这个键储存一些附加的管理信息(比如这个键的类型,这个键最后一次被访问的时间等)
3、键越多,redis数据库在储存附件管理信息方面耗费内存越多,花在管理数据库键上的CPU也会越多 -
缺点(不适合hash情况)
1、使用二进制位操作命令:SETBIT、GETBIT、BITCOUNT等,如果想使用这些操作,只能用字符串键
2、使用过期键功能:键过期功能只能对键进行过期操作,而不能对散列的字段进行过期操作 -
基本命令操作
#1、设置单个字段
HSET key field value
HSETNX key field value
#2、设置多个字段
HMSET key field value field value
#3、返回字段个数
HLEN key
#4、判断字段是否存在(不存在返回0)
HEXISTS key field
#5、返回字段值
HGET key field
#6、返回多个字段值
HMGET key field filed
#7、返回所有的键值对
HGETALL key
#8、返回所有字段名
HKEYS key
#9、返回所有值
HVALS key
#10、删除指定字段
HDEL key field
#11、在字段对应值上进行整数增量运算
HINCRBY key filed increment
#12、在字段对应值上进行浮点数增量运算
HINCRBYFLOAT key field increment
集合数据类型(set)
- 特点
1、无序、去重
2、元素是字符串类型
3、最多包含2^32-1个元素 - 基本命令
#1、增加一个或者多个元素,自动去重
SADD key member1 member2
#2、查看集合中所有元素
SMEMBERS key
#3、删除一个或者多个元素,元素不存在自动忽略
SREM key member1 member2
#4、元素是否存在
SISMEMBER key member
#5、随机返回集合中指定个数的元素,默认为1个
SRANDMEMBER key [count]
#6、弹出成员
SPOP key [count]
#7、返回集合中元素的个数,不会遍历整个集合,只是存储在键当中了
SCARD key
#8、把元素从源集合移动到目标集合
SMOVE source destination member
#9、差集(number1 1 2 3 number2 1 2 4 结果为3)
SDIFF key1 key2
#10、差集保存到另一个集合中
SDIFFSTORE destination key1 key2
#11、交集
SINTER key1 key2
SINTERSTORE destination key1 key2
#12、并集
SUNION key1 key2
SUNIONSTORE destination key1 key2
有序集合(sortedset)
- 特点
1、有序、去重
2、元素是字符串类型
3、每个元素都关联着一个浮点数分值(score),并按照分值从小到大的顺序排列集合中的元素(分值可以相同)
4、最多包含2^32-1元素 - 有序集合常用命令
#在有序集合中添加一个成员
zadd key score member
#查看指定区间元素(升序)
zrange key start stop [withscores]
#查看指定区间元素(降序)
ZREVRANGE key start stop [withscores]
#查看指定元素的分值
ZSCORE key member
#返回指定区间元素
#offset : 跳过多少个元素
#count : 返回几个
#小括号 : 开区间 zrangebyscore fruits (2.0 8.0
zrangebyscore key min max [withscores] [limit offset count]
#每页显示10个成员,显示第5页的成员信息:
#limit 40 10
#MySQL: 每页显示10条记录,显示第5页的记录
#limit 40,10
#limit 2,3 显示: 第3 4 5条记录
#删除成员
zrem key member
#增加或者减少分值
zincrby key increment member
#返回元素排名
zrank key member
#返回元素逆序排名
zrevrank key member
#删除指定区间内的元素
zremrangebyscore key min max
#返回集合中元素个数
zcard key
#返回指定范围中元素的个数
zcount key min max
zcount salary 6000 8000
zcount salary (6000 8000# 6000<salary<=8000
zcount salary (6000 (8000#6000<salary<8000
#并集
#zunionstore destination numkeys key [weights 权重值] [AGGREGATE SUM|MIN|MAX]
#zunionstore salary3 2 salary salary2 weights 1 0.5 AGGREGATE MAX
#2代表集合数量,weights之后 权重1给salary,权重0.5给salary2集合,算完权重之后执行聚合AGGREGATE
#交集:和并集类似,只取相同的元素
ZINTERSTORE destination numkeys key1 key2 WEIGHTS weight AGGREGATE SUM(默认)|MIN|MAX