读书笔记-----redis实战(一)
第一章 初识redis
redis数据结构
- redis可以存储键与五种不同数据结构类型之间的映射。分别有:
- STRING 字符串
- LIST 列表
- HASH 散列
- SRT 集合
- ZSET 有序集合
- 基础操作
- string 的get、set、del
- list的rpush、lpush、lrange0 -1、lindex、lpop
- set的sdaa、srem、smembers、sismember
- hash的hset、hgetall、hdel、hget
- zset的zadd、zrange、zrangebuscore
- zset是redis里面唯一一个既可以根据成员访问元素,又可以根据分值以及分值的排序顺序来访问元素的结构。
第二章 使用redis
- 使用redis记录用户信息(没讲具体实现)
- 使用redis实现购物车:每个用户的购物车都是一个散列,存储商品ID与商品订单数量之间的映射。
- 网页缓存。等。
第三章 redis命令
字符串
存储字符串、整数和浮点数。
- 自增、自减操作
localhost:0>get key
null
localhost:0>incr key
“1”
localhost:0>get key
“1”
localhost:0>incrby key 11
“12”
localhost:0>decrby key 10
“2”
localhost:0>get key
“2”
2.字节串的读取写入
localhost:0>append love you
“3”
localhost:0>append love you
“6”
localhost:0>append love you
“9”
localhost:0>get love
“youyouyou”
substr love 1 3
“ouy”
列表
由多个字符串组成的有序序列结构。
列表允许用户从序列的两端推入或者弹出元素,还可以存储任务消息,最近浏览的文章或者常用联系人信息。
命令 | 使用 | 描述 |
---|---|---|
rpush | rpush key value | 将一个元素推入列表右端 |
lpush | lpush key value | 将一个元素推入列表左端 |
rpop | rpop key | 移除并返回列表最右端的元素 |
lpop | lpop key | 移除并返回列表最左端的元素 |
lindex | lindex key offset | 返回列表中偏移量为offset的元素 |
lrange | lrange key start end | 返回列表偏移量从start到end内所有元素 |
ltrim | ltirm key start end | 对列表进行修剪,只保留start到end范围内的元素 |
localhost:0>lrange list 0 -1
“c”
“b”
“a”
“d”
“e”
“f”
“item1”
“item2”
localhost:0>lrange list2 0 -1
“item3”
localhost:0>brpoplpush list2 list 1
“item3”
localhost:0>lrange list 0 -1
“item3”
“c”
“b”
“a”
“d”
“e”
“f”
“item1”
“item2”
localhost:0>brpoplpush list list2 1
“item2”
localhost:0>lrange list2 0 -1
“item2”
blpop list list2 1
“list”
“item3”
localhost:0>blpop list list2 1
“list”
“c”
localhost:0>blpop list list2 1
“list”
“b”
localhost:0>lrange list 0 -1
“a”
“d”
“e”
“f”
“item1”
localhost:0>brpop list list2 1
“list”
“item1”
localhost:0>lrange list 0 -1
“a”
“d”
“e”
“f”
集合
集合是以无序的方式存储各个不同的元素
命令 | 使用 | 描述 |
---|---|---|
sadd | sadd key item | 将元素添加到集合里面 |
srem | srem key item | 从集合移除元素 |
sismember | sismember key item | 检查元素是否存储与集合key里面 |
scard | scard key | 返回集合包含的元素数量 |
smembers | smembers key | 返回集合包含的所有元素 |
spop | spop key | 随机移除集合的一个元素,返回移除的元素 |
smove | smove source dest item | 移除item添加到dest中 |
localhost:0>sadd set-key a b c
“3”
localhost:0>smembers set-key
“c”
“a”
“b”
localhost:0>sadd set-key a b
“0”
localhost:0>srem set-key a b
“2”
localhost:0>srem set-key a b
“0”
localhost:0>smembers set-key
“c”
localhost:0>sadd set-key1 a b c d
“4”
localhost:0>sadd set-key2 c d e f
“4”
localhost:0>sdiff set-key1 set-key2
“a”
“b”
localhost:0>sinter set-key1 set-key2
“c”
“d”
localhost:0>sunion set-key1 set-key2
“c”
“e”
“b”
“a”
“d”
“f”
散列
命令 | 使用 | 描述 |
---|---|---|
hmget | hmget key key | 从散列里面获取一个或多个键的值 |
hmset | hmset key value | 为散列里面的一个或者多个键设置值 |
hdel | hdel key key | 删除散列里面的一个或者多个键值对,返回数量 |
hlen | hlen key | 返回散列包含的键值对的数量 |
localhost:0>hmset hash-key ‘k1’:‘v1’ ‘k2’:‘v2’
“OK”
localhost:0>hmget hash-key k1 k2
“v1”
“v2”
有序集合
有序集合存储着成员与分值之间的映射,并且提供了分值处理命令。
localhost:0>zadd zset-key 1 c 2 b 3 a
“3”
localhost:0>zcard zset-key
“3”
localhost:0>zscore zset-key a
“3”
localhost:0>zscore zset-key b
“2”
localhost:0>zscore zset-key 1
null
localhost:0>zscore zset-key c
“1”
发布与订阅
其他命令
- sort
2)设置键的过期时间
命令 | 示例 | 描述 |
---|---|---|
persist | persist key | 移除键的过期时间 |
ttl | ttk key | 查看键距离过期时间还有多少秒 |
expire | expire key seconds | 给键指定的秒数后过期 |
pttl | pttl key | 查看指定键的过期时间还有多少毫秒(redis2.6版本上适用) |
pexpire | pexpire key milliseconds | 让键在指定毫秒之后过期(redis2.6版本上适用) |
第四章 数据安全与性能保障
4.1持久化
redis提供两种不同的持久化方法来将数据存储到硬盘中。一种是快照,它将存在于某一时刻的所有数据都写入磁盘中。另一种只追加文件AOF它会在执行写命令的实惠将被执行的写命令复制到硬盘里面。这两种持久化方式可以同时使用,又可以单独使用
1)快照持久化
redis可以通过创建快照来获取存储在内存中的数据在某个时间点上的副本。在创建快照之后,用户可以对快照进行备份。
缺点:会有丢失上一次备份和下一次备份之间的数据的可能。
2)AOF持久化
AOF 持久化会将被执行的写命令写到AOF文件的末尾,以此来记录数据发生的变化。使用appendonly yes配置选项设置打开持久化方式。
- appendfsync always 每个redis执行写命令都同步到硬盘
- appendfsync everysec 每秒执行一次同步
- appendfsync no 让操作系统决定执行同步的时机。
缺点:随着redis不断的运行。AOF文件体积也会随着增大,极端情况可能会用完磁盘所有空间。还有就是如果redis重启之后,如果AOF文件体积非常大,还原操作时间就会变得很长。
3)重写、压缩AOF文件
用户向redis发送BGREWRITEAOF命令,这时会通过移除AOF文件中的冗余命令来重写AOF文件,是文件变得尽可能的小。为防止AOF文件太大,删除时间长,可以设置一些选项。
- auto-aof-rewrite-percentage
- auto-aof-rewrite-min-size
比如:auto-aof-rewrite-percentage 100,auto-aof-rewrite-min-size 64mb 。那么当AOF文件体积大于64MB。并且体积比上一次重写大了至少100倍,redis 将执行BGREWRITEAOF命令。
4.2复制
复制可以让其他服务器拥有一个不断更新的数据副本。