文章目录
一、概念
Redis是用C语言开发的一个单线程、高性能键值对(key-value)非关系型数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型有Sring、hash、list、set和sortedset
二、命令操作
redis存储的是:key,value格式的数据,其中 key 都是 字符串,value有5种不同的数据结构
- 字符串类型 string
- 哈希类型 hash : map格式
- 列表类型 list : linkedlist格式。支持重复元素
- 集合类型 set : 不允许重复元素
- 有序集合类型 sortedset:不允许重复元素,且元素有顺序
1)String类型
1.存储String : set key value
127.0.0.1:6379> set name libai
OK
2.获取String : get key
127.0.0.1:6379> get name
"libai"
3.删除String : del key
127.0.0.1:6379> del name
(integer) 1
2)hash类型
- 存储:
hset key field fieldValue
127.0.0.1:6379> hset human name libai
(integer) 1
127.0.0.1:6379> hset human password 111
(integer) 1
- 获取某个hash指定字段:
hget key field
127.0.0.1:6379> hget human name
"libai"
127.0.0.1:6379> hget human password
"111"
- 获取hash中所有字段和值:
hgetall key
127.0.0.1:6379> hgetall human
1) "name"
2) "libai"
3) "password"
4) "111"
- 删除hash中某个字段:
hdel key field
127.0.0.1:6379> hdel human name
(integer) 1
127.0.0.1:6379> hgetall human
1) "password"
2) "111"
3)列表类型list
可以添加一个元素到列表的头部(左边)或者尾部(右边)
- 存储:
lpush listname value
:将元素加入列表头部rpush listname value
:将元素加入列表尾部
# 创建list1列表然后添加3个元素
127.0.0.1:6379> lpush list1 a b c
127.0.0.1:6379> lpush list1 d
127.0.0.1:6379> rpush list1 E
- 获取:
lrange listname start end
:范围获取- 0 -1 :是获取所有元素
127.0.0.1:6379> lrange list1 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "E"
- 删除元素
lpop listname
: 删除列表最左边的元素,并将元素返回rpop listname
: 删除列表最右边的元素,并将元素返回
127.0.0.1:6379> lpop list1
"d"
127.0.0.1:6379> rpop list1
"E"
4)集合类型 set
set不允许重复元素,是无序的
- 存储:
sadd setname value
1. 存储:sadd setname value
127.0.0.1:6379> sadd set1 aa
(integer) 1
127.0.0.1:6379> sadd set1 bb
(integer) 1
127.0.0.1:6379> sadd set1 bb
(integer) 0 # 添加失败
- 获取:
smembers setname
:获取set集合中所有元素
2. 获取:smembers setname:获取set集合中所有元素
127.0.0.1:6379> smembers set1
1) "bb"
2) "aa"
- 删除:
srem setname value
:删除set集合中的某个元素
3. 删除:srem setname value:删除set集合中的某个元素
127.0.0.1:6379> srem set1 aa
(integer) 1
127.0.0.1:6379> smembers set1
1) "bb"
5)有序集合类型 sortedset
sortedset 不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
- 存储:
zadd setname score value
1. 存储:zadd setname score value -- 依据score的大小对value进行排序
127.0.0.1:6379> zadd myss 10 libai
(integer) 1
127.0.0.1:6379> zadd myss 20 lisi
(integer) 1
127.0.0.1:6379> zadd myss 3 wuli
(integer) 1
- 获取:
zrange key start end [withscores]
2. 获取:zrange key start end [withscores]
0 -1:获取所有
127.0.0.1:6379> zrange myss 0 -1
1) "wuli"
2) "libai"
3) "lisi"
2.1 获取:同时把分数也获取出来
127.0.0.1:6379> zrange myss 0 -1 withscores
1) "wuli"
2) "3"
3) "libai"
4) "10"
5) "lisi"
6) "20"
- 删除:
zrem setname value
3. 删除:zrem setname value
127.0.0.1:6379> zrem myss lisi
(integer) 1
127.0.0.1:6379> zrange myss 0 -1 withscores
1) "wuli"
2) "3"
3) "libai"
4) "10"
通用命令:
1. keys * : 查询所有的键
2. type key : 获取键对应的value的类型
3. del key:删除指定的key value
三、Redis的持久化
redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。
1)redis持久化机制
1. RDB:默认方式,不需要进行配置,默认就使用这种机制
* 在一定的间隔时间中,检测key的变化情况,然后持久化数据
1. 编辑redis.windwos.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 if at least 10000 keys changed
save 60 10000
2. 重新启动redis服务器,并指定配置文件名称
D:\Java\develop\redis\windows-64\redis-2.8.9>redis-server.exe redis.windows.conf
2. AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
1. 编辑redis.windwos.conf文件
appendonly no(关闭aof) --> appendonly yes (开启aof)
# appendfsync always : 每一次操作都进行持久化
appendfsync everysec : 每隔一秒进行一次持久化
# appendfsync no : 不进行持久化
四、redis服务器启动后闪退怎么办?
- 在解压的redis文件夹下新建一个start.bat(window启动一般都是xx.bat)
- 创建start.txt,添加内容:redis-server.exe redis.windows.conf
- 保存,修改后缀名为.bat
- 打开redis.windows.conf文件,限制内存
- 搜索:maxheap
- 另起一行,输入: maxheap 1024000000
- 双击start.bat即可启动