注意:安装包和文件已经上传到 资源中
2.3 安装和启动
* 下载
Reids官网地址:http://redis.io
中文网地址:https://www.redis.net.cn/
GitHub地址:https://github.com/MSOpenTech/redis/tags
* 安装
解压缩即可
* 目录
redis.windows.conf:配置文件
redis-cli.exe:redis的客户端
redis-server.exe:redis服务器端
* 启动
推荐使用命令行的方式
在当前解压后的目录下 cmd进入dos窗口
先启动 redis-server.exe redis.windows.conf
再启动 redis-cli.exe
2.4 数据结构(重点)
redis存储的是:key-value格式的数据,其中key是字符串类型,value支持五种数据类型
1. 字符串类型 string
2. 哈希类型 hash ---> HashMap
3. 列表类型 list ---> LinkedList
特点:有序且可重复
4. 集合类型 set ---> HashSet
特点:无序且不能重复
5. 有序集合 sortedSet ---> LinkedHashSet
特点:有序且不能重复
2.5 命令操作(数据crud)
ctrl+l 清屏
1. 字符串(string)
1)添加
set key value
2)查询
get key
3)删除
del key
127.0.0.1:6379> set mystring zhangsan
OK
127.0.0.1:6379> set uname jerry
OK
127.0.0.1:6379> get uname
"jerry"
127.0.0.1:6379> set uname jack
OK
127.0.0.1:6379> get uname
"jack"
127.0.0.1:6379> del uname
(integer) 1
127.0.0.1:6379> del uname
(integer) 0
2. 哈希(hash)
1)添加
hset key field value
2)查询
hget key field :查找指定字段名的value
hgetall key :查找所有的键值对 键不能重复
3)删除
hdel key field
127.0.0.1:6379> hset myhash name james
(integer) 1
127.0.0.1:6379> hset myhash age 34
(integer) 1
127.0.0.1:6379> hget myhash name
"james"
127.0.0.1:6379> hgetall myhash
1) "name"
2) "james"
3) "age"
4) "34"
127.0.0.1:6379> hdel myhash age
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "name"
2) "james"
3. 列表(list)你可以添加一个元素到列表的头部(左边)或者尾部(右边)
1)添加
lpush key value:添加一个元素到左边
rpush key vlaue:添加一个元素到右边
2)查询
lrange key start end
查询所有:lrange key 0 -1
3)删除 //-->类似于弹栈和压栈
lpop:将元素从左边弹出
rpop:将元素从右边弹出
127.0.0.1:6379> lpush mylist a
(integer) 1
127.0.0.1:6379> lpush mylist b
(integer) 2
127.0.0.1:6379> rpush mylist c
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> rpush mylist a
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "b"
2) "a"
3) "c"
4) "a"
127.0.0.1:6379> lpop mylist
"b"
127.0.0.1:6379> rpop mylist
"a"
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "c"
4. 集合(set)
1)添加
sadd key value1 value2 ...
2)查询
smembers key
3)删除
srem key value
127.0.0.1:6379> sadd myset a
(integer) 1
127.0.0.1:6379> sadd myset z w
(integer) 2
127.0.0.1:6379> smembers myset
1) "z"
2) "a"
3) "w"
127.0.0.1:6379> sadd myset a
(integer) 0
127.0.0.1:6379> srem myset a
(integer) 1
127.0.0.1:6379> smembers myset
1) "z"
2) "w"
5. 有序集合(soreted set)
1)添加
zadd key score value
2)查询
zrange key start end [withscores] 升序查询
zrevrange key start end [withscores] 降序查询
3)删除
zrem key value
127.0.0.1:6379> zrevrange mysort 0 -1
1) "yasuo"
2) "gailun"
3) "pangxie"
127.0.0.1:6379> zrevrange mysort 0 -1 withscores
1) "yasuo"
2) "100"
3) "gailun"
4) "70"
5) "pangxie"
6) "10"
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "pangxie"
2) "10"
3) "gailun"
4) "70"
5) "yasuo"
6) "100"
127.0.0.1:6379> zrem mysort yasuo
(integer) 1
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "pangxie"
2) "10"
3) "gailun"
4) "70"
6. 扩展命令
1)查询当前库下所有的key
keys *
2)判断key 的数据类型
type key
3)删除指定key的数据
del key
redis默认有16个数据库
0-15
切换库的命令 select 编号
flushall 清除所有库的记录
2.6 持久化
Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。Redis支持两种方式的持久化(RDB和AOF),可以同时使用。
参数需要在redis.window.conf中进行配置
* RDB(默认方式,不要配置) 可能会出现数据的丢失,但是相对于aof效率能跟高一些
该机制指定间隔的时间内将内存的数据以快照的方式,持久化到磁盘
# after 900 sec (15 min) if at least 1 key changed
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
save 300 10
# after 60 sec if at least 10000 keys changed
save 60 10000
* AOF(默认关闭,需要手动配置)
appendonly no(关闭) --> appendonly yes(开启)
该机制以日志记录的方式监听服务器数据的写(set)操作,持久化磁盘
# appendfsync always 每执行一次set,持久化一次
appendfsync everysec 每秒钟,持久化一次
# appendfsync no 不持久化
* 小结
RDB
优点:查询效率高,服务器压力低
缺点:可能会丢失一部分数据
应用场景:作为数据库的缓存
AOF
优点:保证数据的安全性
缺点:查询效率低,服务器压力高
应用场景:作为单独的数据库服务器使用