redis的备份以及数据类型

1.key
127.0.0.1:6379> dbsize
(integer) 0
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set name itxuan
OK
127.0.0.1:6379> get name
"itxuan"
2.字符串:
127.0.0.1:6379> set mykey "hello redis" # 设置字符串值
OK
127.0.0.1:6379> get mykey	# 获取字符串值
"hello redis"
127.0.0.1:6379> getrange mykey 0 4	# 获取键中索引0到4的子字符串
"hello"
127.0.0.1:6379> strlen mykey	# 获取键的字符串长度
(integer) 11
127.0.0.1:6379> append mykey "hello" # 在键"my_key"的字符串值后追加hello
(integer) 16
127.0.0.1:6379> get mykey
"hello redishello"
3.list数据类型:
127.0.0.1:6379> lpush my_list A			-- 在头部添加元素
(integer) 1
127.0.0.1:6379> lpush my_list "B"
(integer) 2
127.0.0.1:6379> lpush my_list C
(integer) 3
127.0.0.1:6379> lpush my_list "redis" "is" 
(integer) 5
127.0.0.1:6379> rpush my_list 123		-- 在列表尾部添加元素
(integer) 6
127.0.0.1:6379> llen my_list		-- 获取列表长度
(integer) 6
127.0.0.1:6379> lrange my_list 0 -1	--  获取列表所有元素
1) "is"
2) "redis"
3) "C"
4) "B"
5) "A"
6) "123"
127.0.0.1:6379> lrange my_list 0 1	-- 获取列表索引为0和1的两个元素
1) "is"
2) "redis"
127.0.0.1:6379> lpop my_list	--  弹出并获取列表头部元素
"is"
127.0.0.1:6379> rpop my_list	--  弹出并获取列表尾部元素
"123"
127.0.0.1:6379> linsert my_list before "B" "x" -- 在元素"B"之前插入元素"X"
(integer) 5
127.0.0.1:6379> linsert my_list after "B" "y" --  在元素"B"之后插入元素"Y"
(integer) 6
127.0.0.1:6379> lrange my_list 0 -1
1) "redis"
2) "C"
3) "x"
4) "B"
5) "y"
6) "A"
127.0.0.1:6379> lrem my_list 1 "B"	-- 从列表中删除1个值为"B"的元素
(integer) 1
127.0.0.1:6379> lindex my_list 3  -- 获取索引为0的元素
"y"
127.0.0.1:6379> lindex my_list -1	-- 获取最后一个元素
"A"
127.0.0.1:6379> ltrim my_list 0 2	-- 保留索引范围在0到2之间的元素,其他元素将被删除
OK
127.0.0.1:6379> lrange my_list 0 -1
1) "redis"
2) "C"
3) "x"
127.0.0.1:6379> 

注意:redis中的list是有序的,元素在列表中的顺序将按照他们被添加的顺序进行存储

4.在Redis中,Set(集合)是一种无序、唯一的字符串集合数据类型。它可以存储多个字符串值,但不允许重复的元素。Set数据类型主要用于存储一组不重复的元素,并且支持一些常见的集合操作,如交集、并集、差集等。
1)添加元素到集合
127.0.0.1:6379> sadd myset "123"
(integer) 1
127.0.0.1:6379> sadd myset "456"
(integer) 1
127.0.0.1:6379> sadd myset "987"
(integer) 1
2)获取集合的所有元素
127.0.0.1:6379> smembers myset
1) "123"
2) "456"
3) "789"
3)获取集合的元素个数
127.0.0.1:6379> scard myset
(integer) 3
4)判断元素是否存在于集合中
127.0.0.1:6379> SISMEMBER myset "456"
(integer) 1
127.0.0.1:6379> SISMEMBER myset "09"
(integer) 0
5)从集合中移除元素
127.0.0.1:6379> SREM myset "123"
(integer) 1
6)随机获取集合中的一个元素
127.0.0.1:6379> SRANDMEMBER myset
"456"
7)获取多个集合的并集
127.0.0.1:6379> SINTER myset1 myset2
1) "n"
2) "b"
8)获取多个集合的并集
127.0.0.1:6379> SUNION myset1 myset2
1) "789"
2) "abc"
3) "789\\"
4) "123,456"
5) "m"
6) "b"
7) "n"
8) "zxvczbnmm"
9) "123"
9)获取多个集合的差集
127.0.0.1:6379> SDIFF myset1 myset2
1) "abc"
2) "789"
3) "m"
4) "123,456"
5.Zset 有序集合

ZSet(有序集合)是一种特殊的数据类型,它类似于Set,但每个成员都关联着一个"分数"(score),这个分数用于对成员进行排序。ZSet中的成员是唯一的,但分数可以重复。有序集合的主要特点是能够根据分数进行快速的范围查找和排序操作。

1)添加成员到有序集合,并设置分数:
127.0.0.1:6379> zadd scores 100 zset1
(integer) 1
127.0.0.1:6379> zadd scores 150 zset2
(integer) 1
127.0.0.1:6379> zadd scores  70 zset3
(integer) 1
2)获取有序集合中的成员个数
127.0.0.1:6379> ZCARD scores
(integer) 3
3)获取有序集合中指定范围的成员
127.0.0.1:6379> ZRANGE scores 0 -1	-- 获取有序集合中所有成员
1) "zset3"
2) "zset1"
3) "zset2"
127.0.0.1:6379> ZRANGE scores 0 1  -- 获取有序集合中分数最低的两个成员
1) "zset3"
2) "zset1"
127.0.0.1:6379> ZREVRANGE scores 0 1  -- 获取有序集合中分数最高的两个成员
1) "zset2"
2) "zset1"
4)获取成员的分数
127.0.0.1:6379> ZSCORE scores zset1
"100"
127.0.0.1:6379> ZSCORE scores zset2
"150"
127.0.0.1:6379> ZSCORE scores zset3
"70"
5)对有序集合中成员的分数进行增减操作
127.0.0.1:6379> ZINCRBY scores 10 zset1
"110"
6)获取有序集合中指定分数范围内的成员
127.0.0.1:6379> ZRANGEBYSCORE scores 80 110   -- 80到100之间的成员
1) "zset1"
7)移除有序集合中的成员
127.0.0.1:6379> ZREM scores zset3
(integer) 1
6.hash

Hash(哈希)是一种用于存储字段和值的映射的数据类型。Hash类似于关联数组或字典,它可以存储多个字段和对应的值。每个字段都是唯一的,并且与一个值关联。Hash数据类型非常适合用于存储和处理一些复杂的数据结构。

1)存储用户信息
127.0.0.1:6379> hset user:12345 name "Alice"	-- 设置name字段值为Alice
(integer) 1
127.0.0.1:6379> hset user:12345 age 30		-- 设置age字段置为30
(integer) 1
127.0.0.1:6379> hset user:12345 email "Alice@123456.com"	
(integer) 1
2)获取用户信息中特定字段值
127.0.0.1:6379> hget user:12345 name	
"Alice"
127.0.0.1:6379> hget user:12345 age
"30"
3)获取用户信息中所有字段和值
127.0.0.1:6379> HGETALL user:12345
1) "name"
2) "Alice"
3) "age"
4) "30"
5) "email"
6) "Alice@123456.com"
4)增加或修改字段值
127.0.0.1:6379> hincrby user:123456 age 22
(integer) 22
5)查看字段是否存在
127.0.0.1:6379> hexists user:12345 email
(integer) 1
6)获取哈希中字段个数
127.0.0.1:6379> hlen user:12345
(integer) 3
7)删除哈希中字段
127.0.0.1:6379> hdel user:12345 age
(integer) 1
7.bitmaps

Bitmaps以紧凑的方式存储二进制数据,其中的每个位(bit)只能是0或1。每个位的位置可以根据索引进行访问和操作。

1)记录用户在线状态
127.0.0.1:6379> setbit user 1001 1	-- # 将用户ID为1001的用户标记为在线状态(设置第1001位为1)
(integer) 0
2) 统计用户活跃天数
127.0.0.1:6379> setbit online_user 1001 1
(integer) 0
127.0.0.1:6379> setbit online_user:1001 5 1
(integer) 0
3) 计算多个用户的在线交集
127.0.0.1:6379> bitop and online_user:intersection online_user:1001 on online_user:1002
(integer) 1
4)统计在线用户数量
127.0.0.1:6379> bitcount online_user
(integer) 1
5)统计用户活跃天数
127.0.0.1:6379> bitcount active_user:1001
(integer) 1
6)获取用户在线状态
127.0.0.1:6379> getbit online_user 1001
(integer) 1
8.HyperLogLog

HyperLogLog是一种基数(cardinality)估算算法,用于估算集合中不重复元素的数量,即计算集合的基数。

1) 添加元素到HyperLogLog
127.0.0.1:6379> PFADD hyperloglog_key "element1" "element2" "element3"
(integer) 1
2)获取HyperLogLog二点基数估量值
127.0.0.1:6379> PFCOUNT hyperloglog_key
(integer) 3
3)合并多个HyperLogLog
127.0.0.1:6379> PFMERGE dest_key source_key1 source_key2 source_key3
OK
9.Geospatial

Geospatial(地理空间)是一种特殊的数据类型,用于存储地理位置信息和执行地理空间查询。它允许将地理位置的经度(longitude)和纬度(latitude)与一个或多个成员关联起来,以便在地理空间上进行各种操作,如距离计算、附近位置搜索等。

1)添加地理位置:
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shenzhen 116.38 39.90 beijing
(integer) 3
2)获取地理位置的经度和纬度
127.0.0.1:6379> geopos china:city "chongqing"
1) 1) "106.49999767541885376"
   2) "29.52999957900659211"
3) 计算两个地理位置之间的距离
127.0.0.1:6379> geodist china:city "shenzhen" "shanghai"
"1215922.3698"
4)查找某个地理位置附近的其他位置
127.0.0.1:6379> georadius china:city 110 30 1000 km
1) "chongqing"
2) "shenzhen"
5) 查找某个地理位置附近的其他位置,并按距离排序:
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withdist
1) 1) "chongqing"
   2) "341.9374"
2) 1) "shenzhen"
   2) "924.6408"
6)获取某个地理位置的哈希值
127.0.0.1:6379> geohash china:city "shanghai"
1) "wtw3sj5zbj0"
二、数据持久化
1.修改配置文件redis.conf

image.png
修改好的保存并重启redis服务,打开客户端
image.png
查看dump.rdb文件的修改时间发现已经拍了一次快照,并且只拍了一条数据
image.png
image.png

2.AOF
1)开启AOF
[root@iZgsmk689v2x6vZ redis]# vim redis.conf 

添加数据

127.0.0.1:6379> set mkdey k1
OK
127.0.0.1:6379> set name  k2
OK
127.0.0.1:6379> set myset k3
OK
127.0.0.1:6379> set mylist k3
OK
127.0.0.1:6379> set dest_key k3
OK
127.0.0.1:6379> set dest_key k4
OK
127.0.0.1:6379> shutdown

2)使用客户端连接 Redis 服务,然后执行:
[root@iZgsmk689v2x6vZ ~]# ps -ef | grep 6379    -- 查看进程号关闭服务
redis     6400     1  0 13:58 ?        00:00:01 /www/server/redis/src/redis-server 127.0.0.1:6379
root      8624  3937  0 14:25 pts/4    00:00:00 grep --color=auto 6379
[root@iZgsmk689v2x6vZ ~]# kill -9 6400
3)重启Redis服务,重命名文件
redis-cli shutdown
mv appendonly.aof appendonly.aof.back

把文件名在改回来,重启服务
image.png
image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值