1.下载安装
百度一下redis,或者去redis的官网https://redis.io进行下载。下载完成之后解压即可使用,
这里使用的版本是 Redis-x64-3.2.100。
2.简单的介绍
redis是一款 key-value类型的非关系型(NoSQL)数据库,由于它直接运行在内存中,所以它的查询速度和磁盘上的数据库的查询速度相比要快很多,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s,虽然不知道这个速度是什么概念,但绝对很快了(手动滑稽)。
3.数据类型介绍
1.redis的数据结构
redis是key-value 类型的数据库,它的key都是字符串,不同的是它的value,有五种类型:字符串-string, 哈希-hash, 列表-list, 集合-set, 有序集合-zset。
2.redis数据类型和java数据类型的对照
Redis | Java |
string | String |
hash | Map |
list | LinkedList |
set | Set |
sortedset | TreeSet |
上面的表格只是做个对照,并不是说就是完全相同的一种类型。
4.应用场景
缓存(数据查询,短链接,新闻内容,商品内容)
聊天室在线好友列表
任务队列
应用排行榜
网站访问统计
数据过期处理
分布式集群架构中的session分离
5.命令行操作
下载之后解压,文件夹中会有几个可执行文件。需要使用 redis-server.exe 启下动redis服务, 而后使用redis-cli.exe启动客户端。这时,我们就可以使用客户端命令行进行简单的操作了。下面说一下命令的基本使用,每种数据类型的命令都略有不同:
1.string
- 语法:
- 保存:set key value
- 获取:get key
- 删除:del key
- 示例:
- 127.0.0.1:6379> set str1 val1
OK
127.0.0.1:6379> get str1
"val1"
127.0.0.1:6379> del str1
(integer) 1
127.0.0.1:6379>
2.hash
- 语法
- 保存:hset key field value
- 获取:hget key field
- 删除:hdel key field
- 获取所有:hgetall key
- 示例:
127.0.0.1:6379> hset hash1 name zhangsan
(integer) 1
127.0.0.1:6379> hset hash1 name zhangsan
(integer) 1
127.0.0.1:6379> hset hash1 age 12
(integer) 1
127.0.0.1:6379> hgetall hash1
1) "name"
2) "zhangsan"
3) "age"
4) "12"
127.0.0.1:6379> hdel hash1 name
(integer) 1
3.list
list 类型可以添加一个元素到头部或者尾部。
- 语法:
- 保存:lpush key value 将元素加入到左边;rpush key value 将元素加入到右边;
- 获取:lrange key start end 范围获取(0 到 -1 可以获取所有的元素)
- 删除:lpop key/ rpop key
- 示例:
// 左边插入
127.0.0.1:6379> lpush testList 1
(integer) 1
127.0.0.1:6379> lpush testList 0
(integer) 2
127.0.0.1:6379> lrange testList 0 -1
1) "0"
2) "1"
127.0.0.1:6379>
// 右边插入,一次插入多个
27.0.0.1:6379> rpush testList 3 4 5
(integer) 5
127.0.0.1:6379> lrange testList 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
// 删除,每次只能删除一个元素
127.0.0.1:6379> lrange testList 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> lpop testList
"1"
127.0.0.1:6379> lrange testList 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379> rpop testList
"5"
127.0.0.1:6379> lrange testList 0 -1
1) "2"
2) "3"
3) "4"
127.0.0.1:6379>
4.set
集合类型set不允许重复的元素。
- 语法:
- 保存:sadd key value
- 获取:smembers key 获取set集合中的所有元素
- 删除:srem key value 删除set集合中的某特元素
- 实例:
// 存储:sadd key value
127.0.0.1:6379> sadd myset a
(integer) 1
127.0.0.1:6379> sadd myset a
(integer) 0
// 获取:smembers key:获取set集合中所有元素
127.0.0.1:6379> smembers myset
1) "a"
// 删除:srem key value:删除set集合中的某个元素
127.0.0.1:6379> srem myset a
(integer) 1
5.sortedset
sortedset 是有序集合,不允许重复元素,且是有序的,每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的元素进行排序的(同一个分数只允许一个变量存在,后面的会覆盖前面的)。有序的集合可以做热搜或者排行榜,搜索量由大到小进行排列。
- 语法:
- 保存:zadd key score value
- 获取:zrange key start end [with scores] (从0 到 -1 获取所有元素)
- 删除:zrem key value
- 示例:
// 存储:
127.0.0.1:6379> zadd mysort 60 zhangsan
(integer) 1
127.0.0.1:6379> zadd mysort 50 lisi
(integer) 1
127.0.0.1:6379> zadd mysort 80 wangwu
(integer) 1
// 获取:
127.0.0.1:6379> zrange mysort 0 -1
1) "lisi"
2) "zhangsan"
3) "wangwu"
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "zhangsan"
2) "60"
3) "wangwu"
4) "80"
5) "lisi"
6) "500"
// 删除:
127.0.0.1:6379> zrem mysort lisi
(integer) 1
通用命令
- keys pattern : 根据模式(表达式)获取redis中的key, keys * 获取所有的key
- type key: 获取指定key对应的类型
- del key:删除 指定key
6.redis的持久化方式
1.redis是一个内存数据库,当redis服务重启,或者电脑重启,数据会丢失,我们可以将redis内存中的数据持久化到本地硬盘。
2. redis持久化机制
1) rdb(redis database) :默认方式,不需要进行配置,默认就使用这种机制
a. 在一定间隔的时间内,检测key 的变化情况,然后持久化数据。编辑redis.windows.conf 文件
# 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 ijjf at least 10000 keys changed
save 60 10000
# 需要注意的一点就是配置的前面一定不能有空格,否则不能正常启动。
b. 重新启动redis服务器,并指定配置文件名称
D:\Redis-x64-3.2.100\redis-server.exe redis.windows.conf
修改配置文件的过程中,遇到一个问题:
Invalid argument during startup: unknown conf file parameter:
原因:配置文件中的注释删掉后,配置语句的前面存在有空格
2) aof (Append Only File) : 日志记录的方式,可以记录每一条命令的操作。可以在每一次命令操作后,持久化数据。
编辑redis.windwos.conf文件
appendonly no(关闭aof) --> appendonly yes (开启aof)
# appendfsync always : 每一次操作都进行持久化
appendfsync everysec : 每隔一秒进行一次持久化
# appendfsync no : 不进行持久化
结束
以上是redis的简介和命令行的基本操作,以及redis持久化的配置方式。此为一篇,还会有第二篇介绍在java中使用redis的案例。