Redis笔记(四):基础笔记

1,KEYS pattern,获得符合规则的键名列表

glob风格的通配符规则:

?  匹配一个字符

* 匹配任意个包括0个字符

[]匹配任一个字符,可以使用-表示一个范围

\x 匹配x,用于转义字符

KYES命令需要遍历redis中所有键,当键数量较多时会影响性能,因此不建议在生产中使用

 2,redis的键名最佳命名规则:

对象类型:对象ID:对象属性,比如user:6:friends来存储ID为1的用户的好友列表

对于多个单词则推荐使用.分隔符,另外可读性也非常重要,不要省这么一点点空间。

3,生成自增ID:

RDBS中科院使用AUTO_INCREMENT来实习自增ID主键,redis中可以对每一类对象使用名为users:count的键来存储当前类型的对象的数量,每次增加一个新对象都使用INCR原子命令获取该新对象的ID值即可。

 4,散列类型hash

适合用来存储对象,使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值存储属性值。

一般来讲存储对象可以用json序列化的字符串,可以用hash,如果是需要频繁的获取或者更新对象的某些属性,为了防止传输开销和序列化开销,最好使用hash。

散列类型还有一个好处,就是对于同一类对象,每个对象的属性可以不一样,这在关系型数据库中不可能

# 增加数字

HINCRBY key field increment

# 只获取字段名或字段值

HKEYS key  /  HVALS key  /  HLEN key

5,集合类型Set

# 获取Set中元素个数

SCARD key

# 获取Set中所有元素

SMEMBERS key

# 进行集合运算并将结果存储

SDIFFSTORE dest key1 key2

SINTERSTORE dest key1 key2

SUNIONSTORE dest key1 key2

# 随机获取Set中元素

SRANDMEMBER key count

count 为正数的时候随机获取count个不重复元素,为负数时候随机获取|count|个可能重复元素

6,有序集合SortedSet类型

List和SortedSet的应用场景区别:

1) List类型是通过LinkedList实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更适合实现如 新鲜事  日志  这样很少访问中间元素的应用。

2) SortedSet类型使用散列表和跳跃表SkipList实现,所以即使读取位于中间的部分的元素速度很非常快,时间复杂度是O(log(N)),不过比Hash慢,Hash是O(1)

3) List中不能简单调整某个元素的位置,但是有序集合可以(通过更改元素的score)

4) SortedSet比List更耗内存(PS:这不废话吗,没有免费午餐)

SortedSet可以说是redis中最高级的数据结构了,吊爆了~

# ZRANGE key start end [WITHSCORES]

按照元素score分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端元素,索引从0开始)

# ZRANGEBYSCORE key min max [WITHSCORES] LIMIT offset count

如果希望分数范围不包括端点值,可在分数前加上(符号。

ZRANGEBYSCORE scoreboard (80 +inf

后面的offset和count跟mysql中的含义一样,一个是偏移量,一个是数量

# ZREVRANGEBYSCORE scoreboard 100 0 LIMIT 0 3

注意上面的min和max是跟前面的ZRANGEBYSCORE是相反的

博客新地址:http://yidao620c.github.io

猜你喜欢

转载自yidao620c.iteye.com/blog/1918504