本文主要介绍Redis的具体使用和Redis的数据类型及操作?
一、Redis的数据类型
1)、string数据类型(默认)。
2)、List链表数据类型。
3)、set集合数据类型。
4)、Sort set排序集合数据类型。
5)、hash数据类型
二、key的操作
在redis里面,除了 空格 和 "\n" 不能作为名字的组成内容外,其他的内容都是可以直接作为key的名称做成部分,名称的长度不做要求。
但是key不要太长,占内存,查询慢。
redis默认的数据类型是string类型。
key键的操作
描述
keys *
返回当前数据库中的所有 key
exists key
返回key是否存在
del key1 key2 ... keyN
删除key
type key
返回key的value类型
keys pattren
返回匹配指定模式的所有 key
rename oldkey newkey
重新修改 key 名字
expire key seconds
为 key 指定过期的时间
dbsize
返回当前数据库中的 key 的数量
ttl key
返回 key 的剩余过期时间
select db-index
选择数据库
move key db-index
将 key 从当前的数据库移动到指定数据库
flushdb
删除当前数据库中所有 key
flushall
删除所有数据库中的所有 key
拓展:
查看redis默认的数据库个数,最多16数据库。
vim redis.conf
查看:databases 16 数据库下标是从0开始的。
例如:select 1 代表打开的是第二个数据库。
Redis的数据类型以及操作
1)、string字符串类型操作
string是redis最基本的类型。
redis的string可以包含任何数据。包括jpg图片或者序列化的对象。
单个的value值最大的上限是1G字节。
如果只是使用string类型,redis可以被看做是持久化的memcache。
注意:redis默认的数据类型是string类型。
string的操作
描述
set key value
设置 key 对应的值为string 类型的 value
mset key1 value1 ...keyN valueN
一次设置多个 key 值
mget key1 key2 ...keyN
一次获取多个 key 值
incr key
对 key 进行加加操作,并且返回新的值
decr key
对 key 进行减减操作,并且返回新的值
incrby key integer
同incr,加指定的值
decrby key intrger
同decr,减指定的值
append key value
给指定 key 的字符串值加上 value
substr key start end
返回截取过的 key 的字符串值
incr 递增 相当于 ++
新key:创建key并累加1,其值为1.
已有key:key的值加1,并且key的value数据类型必须是整型。
decr 递减 相当于 --
decr的操作和incr操作一致,只不过是减1。
substr:对内容进行截取,包括start和end标记位置内容。
2)、List链表数据类型操作
list类型其实就是一个双向链表,通过push,pop操作从list链表的头部或者尾部添加删除元素。这使得list链表既可以做栈,也可以做队列。
栈:上进上出。
队:上进下出。
list链表的操作
描述
lpush key string
在 key 对应 list 的头部添加字符串元素
rpop key
从 list链表 的尾部删除元素,并且返回删除的元素
llen key
返回 key 对应 list链表中 key 的长度,key不存在返回0,如果 key 对应类型不是 list 返回错误
lrange key start end
返回指定区间的元素,下标从0开始
rpush key string
在 key 对应 list 的尾部添加字符串元素
lpop key
从 list 的头部删除元素,并返回删除元素
ltrim key start end
截取 list,保留指定区域内元素
例如:select * from member order by logintime desc limit 10;
如果通过list链表轻松的实现保持系统最新的登录10个用户,每进来新的用户就删除一个旧的用户,每次就可以从链表中直接获得需要的数据,极大的节省的资源消耗。
3)、set集合数据类型操作
redis的set是string类型的无序集合。
set元素最大包含(2的32次方-1)个元素。
关于set集合类型除了资本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中好友推荐的功能。
注意:每个集合中的各个元素不能重复。
该类型应用场合:QQ好友 推荐。
tom朋友圈:mary jack xioaming wang5 wang6
linken朋友圈:yuehan daxiong luce wang5 wang6
返回 set 的元素个数set集合的操作
描述
sadd key member
添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果已存在,返回0,key 对应的 set 不存在返回错误
srem key member1 member2... memberN
从 key 对应 set 中移除给定的元素,成功返回1
smove p1 p2 member
从 p1 对应 set 中移除 member 并添加到 p2 对应 set 中
scard key
sismember key member
判断 member 是否在 set 集合中
sinter key1 key2 ...keyN
返回所有指定key的并集
sunion key1 key2 ...keyN
返回所有指定key的交集
sdiff key1 key2 ...keyN
返回所有指定key的差集
smembers key
返回 key 对应 set 的所有元素,结果是无序的
创建tom集合
sadd tomFri mary
创建linken集合
sadd linkenFri mary
sinter tomFri linkenFri 交集
sunion tomFri linkenFri 并集
sdiff tomFri linkenFri 差集
4)、Sort set排序集合数据类型
和set 一样sort set也是string类型元素的集合
不同的是每个元素都会关联一个权(score)。
通过权值可以有序的获取集合中的元素。
sort set使用场景:
获取热门帖子(回复量)信息:select * from message order by backnum desc limit 5
上面的语句在mysql中也能实现,但是比较耗费mysql数据库资源。
排序集合中的每个元素都是值、权的组合。
Sort set集合的操作
描述
zadd key score member
添加元素到集合,元素在集合中存在则更新对应的 score
zrem key member
删除指定元素。返回1,表示成功;如果元素不存在返回0
zincrby key incr member
按照指定的 key 添加对应的 member 的 score(incr)值,返回score值
zrank key member
返回指定元素集合中的排名(下标),集合中元素是按 score 从小到大排序的
zrevrank key member
同上,返回的集合中元素是按 score 从大到小排序
zrevrange key start end
按照给定的区间元素,值由高到低排序,返回有序结果
zcard key
返回集合中元素的个数
zscore key element
返回给定元素对应的 score
zremrangebyrank key min max
删除集合中排名在给定区间的元素(权值由小到大排序)
创建sort set 排序集合
zadd hotmessage 100 1
zremrangebyrank key 0 0 删除一个元素,包含自身元素
关于重复值:
set类型:没有。
list链表类型:有。(当新用户登录的时候,此用户之前一次的登录记录还是在的)
Sort set 类型:没有。
5、hash数据类型
hash数据类型存储的数据与mysql数据库中存储的一条记录极为相似。
具体的省略,后面补充。