Redis(二) 命令操作及持久化
1、redis的数据结构
redis存储的是key,value格式的数据,其中key都是字符串,value有5中不同的数据结构
-
value的数据结构:
-
字符串类型 string
-
哈希类型 hash : map格式
-
列表类型 list :LinkedList格式,允许重复元素
-
集合类型 set :不允许重复元素
-
有序集合类型 sortedset :不允许重复元素,元素有序
-
2、操作
2.1 字符串类型 string
-
存储:set key value (key如果已经存在,会覆盖)
-
获取:get key
-
删除:del key
127.0.0.1:6379> set username zhangsan OK 127.0.0.1:6379> set age 19 OK 127.0.0.1:6379> get age "19" 127.0.0.1:6379> set age 20 OK 127.0.0.1:6379> get age "20" 127.0.0.1:6379> del age (integer) 1
2.2 哈希类型 hash
-
存储:hset key field value
-
获取: hget key field,获取指定field的对应value
hgetall key,获取所有的field和value
-
删除: hdel key field
127.0.0.1:6379> hset myhash username zhangsan
(integer) 1
127.0.0.1:6379> hset myhash password 123
(integer) 0
127.0.0.1:6379> hget myhash username
"zhangsan"
127.0.0.1:6379> hgetall myhash
1) "password"
2) "123"
3) "username"
4) "zhangsan"
127.0.0.1:6379> hdel myhash username
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "password"
2) "123"
2.3 列表类型 list
redis列表是简单的字符串列表,按照插入的顺序排序,可以添加一个元素到列表的头部(左边)或尾部(右边)
-
添加
- lpush key value:将元素加入列表左边
- rpush key value:将元素加入列表右边
-
获取
- lrange key start end:范围获取
-
删除
- lpop key:删除列表最左边元素,并将元素返回
- rpop key:删除列表最右边元素,并将元素返回
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> lpop mylist
"b"
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "c"
127.0.0.1:6379> rpop mylist
"c"
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
127.0.0.1:6379> lpush mylist a
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "a"
2.4 集合类型 set(不允许重复,没有顺序)
- 存储 sadd key value
- 获取 smembers key:获取set集合中所有的元素
- 删除 srem key value:删除set集合中的某个元素
127.0.0.1:6379> sadd myset a
(integer) 1
127.0.0.1:6379> sadd myset a
(integer) 0
127.0.0.1:6379> smembers myset
1) "a"
127.0.0.1:6379> sadd myset b c d
(integer) 3
127.0.0.1:6379> smembers myset
1) "b"
2) "c"
3) "a"
4) "d"
127.0.0.1:6379> srem myset a
(integer) 1
127.0.0.1:6379> smembers myset
1) "b"
2) "c"
3) "d"
2.5 有序集合 sortedset(不允许重复,有序)
每个元素都会关联一个double类型的分数,redis通过分数来为sortedset集合中的元素进行从小到大的排序
- 存储 zadd key score value
- 获取 zrange key start end
- 删除 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) "lisi"
2) "50"
3) "zhangsan"
4) "60"
5) "wangwu"
6) "80"
127.0.0.1:6379> zadd mysort 500 lisi
(integer) 0
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
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "zhangsan"
2) "60"
3) "wangwu"
4) "80"
2.6 通用命令
- keys *:查询所有键
127.0.0.1:6379> keys *
1) "myset"
2) "nihao"
3) "myhash"
4) "mylist"
5) "username"
6) "mysort"
- type key:获取key对应的类型
127.0.0.1:6379> type myset
set
- del key:删除指定的key - value
127.0.0.1:6379> del myset
(integer) 1
3、持久化
-
redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据就会丢失。可以将redis内存中的数据持久化保存在硬盘的文件中。
-
redis持久化机制:
-
RDB:默认方式,不需要进行配置。
-
在一定时间间隔中,检测key的变化情况,然后持久化数据
-
修改配置文件 redis.windows.conf(Windows)、redis.conf(MacOS),修改后需要重启redis,进入redis路径下,输入redis-server redis.windows.conf(Windows)或redis-server redis.config(MacOS)
# 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
RDB持久化的数据存储在dump.rdb文件中
-
-
AOF:日志记录的方式,可以记录每一条命令的操作。可以在每一次命令操作后持久化数据。性能差。
-
修改配置文件redis.windows.conf(Windows)、redis.conf(MacOS),修改后需要重启redis,进入redis路径下,输入redis-server redis.windows.conf(Windows)或redis-server redis.config(MacOS)
appendonly no(关闭aof)--> appendonly yes(开启AOF) # appendfsync always:每一次操作后都持久化 appendfsync everysec:每隔一秒进行一次持久化,默认 # appendfsync no:不进行持久化
AOP持久化的数据存储在appendonly.aof
-
-