1. 什么是Redis
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
-
字符串类型 string
-
哈希类型 hash
-
列表类型 list
-
集合类型 set
-
有序集合类型 sortedset
2.redis的数据结构
(1).字符串类型String
存储:set key value mset key1 value1 key2 value2...
获取:get key mget key1 key2 key3...
getrange key startindex endindex 获取范围startindex-endindex的字串
strlen key 查看字符串长度
删除:del key
改:append key element 在原有value后追加内容
字符串是整数时:incr key 按key创建值为1的value或使value增长1
incrby key element 按key使value增长给定数值
decr key按key使value减小1
decrby key element 按key使value减小给定值
(2).哈希类型Hash
存储:hset key field1 value1 field2 value2...
获取:(1):hget key field 获取指定的field对应的值
(2):hgetall key 获取所有的field 和value
(3):hmget key field1 field2...获取一至多对value
删除:hdel key field1 field2 field3....删除一至多对
改:value内容使数值:hincrby key field 整数值 按key和field使value增长给定值
hincrbyfloat key field 小数值 按key和field增长给定数值
(3).列表类型list
添加:(1):lpush key value:将元素加入列表左表
(2):rpush key value:将元素加入列表右边
获取:(1):lrange key start end
(2):lindex key index 获取指定位置的值
删除:(1):lpop key:删除列表最左边的元素,并将元素返回
(2):rpop key:删除列表最右边的元素,并将元素返回
改值:(1):lset key index element 将指定位置的值改变
将第一个改成aaa,之前删除只剩一个,所有输出只有aaa
(2):linsert key after value element 将值插入到指定的value后面
(3):linsert key before value element 将值插入到指定的value前面
(4). 集合类型set:不允许重复元素
存储:sadd key
获取:smembers key:获取set集合中所有元素
scard key 查看成员数量
删除:srem key
改:smove key1 key2 member 将指定成员从集合1移到集合2
(5).有序集合类型sortedset:不允许重复元素,且元素有顺序,每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大排序。
存储:zadd key score value
获取:zrange key start end (withscores:返回结果及其分数)
zscore key value:查看成员分数
zmscore key value1 value2...批量查看分数
zcard key 查看成员数量
删除:zrem key value
改:zadd key [nx/xx][gt/lt][ch][incr] score1 value
nx:仅当成员不存在时添加成员 xx:仅当成员存在时修改成员
lt:仅当分数低于原分数时才更新分数 gt:仅当分数高于原分数时才更新分数
ch:返回变更的成员数 incr:累加分数,只能操作一个分数一个成员对
zincrby key element value:给指定成员的分数增加给定数值