一. keys 键的操作
exists key | 测试指定的key是否存在 |
del key1 key2....keyN | 删除指定的key |
type key | 返回指定key 的value类型 |
keys pattern | 返回匹配指定模式的所有key |
rename oldkey newkey | 改名 |
dbsize | 返回当前数据库的key数量 |
expire key seconds | 为key指定过期时间 |
ttl key | 返回key的声誉过期秒数 |
select db-index | 选择数据库 |
move key db-index | 将key从当前数据库移动到指定的数据库 |
flushdb | 删除当前数据库中的所有key |
flushall | 删除所有数据库中的所有key |
二.string类型操作
set key value | 设置key对应的值为string类型的value |
mset key1 value1...keyN valueN | 一次设置多个key 的值 |
mget key1 key2...keyN | 一次获取多个key 的值 |
incr key | 对key的值做加加操作,并返回新的值 |
decr key | 同上,但做的是减减操作 |
incrby key integer | 同incr,加指定值 |
decrby key integer | 同decr,减指定值 |
append key value | 给指定key 的字符串追加value |
substr key start end | 返回截取过的key 的字符串 |
三.List数据类型
1.说明:
list类型其实就是一个双向的链表,通过push,pop操作从链表的头部或者尾部天剑删除元素。
这使得list既可以用作栈,也可以用作队列。
2.应用场合:
获得最新的10个登录用户的信息:select * from user order by logintime desc limit 10;
以上的sql 语句可以使单,但是数据过多的时候,全部数据都要受到影响,对数据库的负载比较高。必要的情况还需要给关键字 (id或logintime)设置索引,索引也是比较耗费系统资源。
如果通过list链表实现以上的功能,可以在list链表中只保留最新的10个数据,每进来一个新的数据就删除一个旧数据,每次可以从链表中直接获得需要的数据。极大的节省各方面的资源消耗。
3.list类型操作
lpush key string | 在key对应list 的头部添加字符串元素 |
rpop key | 从list的尾部删除元素,并返回删除的元素 |
llen key 返回 key | 对应list 的长度,key不存在返回0, 如果key对应的类型不是list返回错误 |
lrange key start end | 返回指定区间内的元素,下标从0 开始 |
rpush key string | 从尾部添加元素 |
lpop key | 从list的头部删除元素,并返回删除的元素 |
ltrim key start end | 截取list,保留指定区间内元素 |
操作:
a.设置一个链表key, 内部有5 个元素
b.增加一个新元素,并删除一个旧元素
c.截取元素
四.set集合类型
1.说明:
redis 的 set 是 string类型的无序集合
set元素最大可以包含(2的32次方-1)个元素
关于set集合除了基本的添加删除操作之外,其他的有用的操作还包含取并集(union)、交集(intersection)、差集(difference).通过这些操作我们很容易的实现QQ中的好友推荐功能。
注意: 每个集合中的各个元素不能重复
2.应用场景:
3. set类型操作
sadd key member | 添加一个string元素到key对应的set集合,成功返回1 如果元素已经在集合中,返回0, key对应的set不存在返回错误 |
srem key member [member] | 从key对应的set中移除给定的元素,成功返回1 |
smove p1 p2 member | 从p1 对应 set 中 移除member并添加到p2 对应的set中 |
scard key | 返回set的元素个数 |
sismember key member | 判断member是否在set中 |
sinter key1 key2 ... keyN | 返回所有给定的key 的交集 |
sunion key1 key2 ... keyN | 返回所有给定的key 的并集 |
sdiff key1 key2 ... keyN | 返回所有给定的key 的差集 |
smembers key | 返回key对应的set的所有元素,结果是无序的 |
4. 操作:
a. 创建tomFri的set集合 并添加元素
b.创建linkenFri的set集合 并添加元素
c.查询tomFri 和 linkenFri 的交集(并集、差集 类似)
d.返回集合中的元素,结果是无序的
五. Sort Set排序集合类型
1.说明:
和set一样sort set 也是string类型元素的集合
不同的是每个元素都会关联一个权
通过权值可以有序的获取集合中的元素
2.适用场合:
获得热门帖子(回复量)信息:select * from message order by backnum desc limit 5;
(以上需求可以通过简单的sql语句实现,但是sql语句比较耗费mysql 的资源)
3.案例
利用sort set实现获取最热门的前5帖子信息
排序集合中的每个元素都是值、权的组合
(之前的set几个类型每个元素都这是一个值)
我们只做一个sort set排序集合,里面只保留5个元素的信息,该5个元素是回复量最高的。
每个帖子被回复的时候,都有机会进入该集合里面,但是只有回复量最高的前5个帖子存在于集合,回复量低的就会被删除。
zadd key score member | 添加元素到集合,元素在集合中存在则更新对应的score |
zrem key member | 删除指定元素,1 表示成功, 如果元素不存在则返回0 |
zincrby key incr member | 按照incr幅度增加对应member 的score值,返回score值 |
zrank key member | 返回指定元素在集合中的排名(下标),集合元素是按score从小到大排序的 |
zrevrank key member | 同上,但是集合中的元素是按从大到小排序的 |
zrange key start end | 类似lrange 操作从集合中去指定区间的元素,返回的是有序结果 |
zrevrange key start end | 同上,返回的是按score 逆序的 |
zcard key | 返回集合中元素个数 |
zscore key element | 返回给定元素对应的score |
zremrangebyrank key min max | 删除集合中排名在给定区间的元素 |
a. 插入数据
b.权值从高到低
c.删除权值最小的元素