Redis(二) 命令操作及持久化

Redis(二) 命令操作及持久化

1、redis的数据结构

redis存储的是key,value格式的数据,其中key都是字符串,value有5中不同的数据结构

  • value的数据结构:

    1. 字符串类型 string

    2. 哈希类型 hash : map格式

    3. 列表类型 list :LinkedList格式,允许重复元素

    4. 集合类型 set :不允许重复元素

    5. 有序集合类型 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列表是简单的字符串列表,按照插入的顺序排序,可以添加一个元素到列表的头部(左边)或尾部(右边)

  • 添加

    1. lpush key value:将元素加入列表左边
    2. rpush key value:将元素加入列表右边
  • 获取

    1. lrange key start end:范围获取
  • 删除

    1. lpop key:删除列表最左边元素,并将元素返回
    2. 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、持久化

  1. redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据就会丢失。可以将redis内存中的数据持久化保存在硬盘的文件中。

  2. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值