Redis

这篇博客详细介绍了Redis中的数据类型,包括字符串string、键命令、哈希hash、列表list、集合set和有序集合zset的操作,如增删改查、设置过期时间等。同时,还涵盖了Redis主从搭建、集群搭建和哨兵等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.字符串string

  • 1.增 set mset
  • 2.删 del
  • 3.改 set
  • 4.查 get mget
  • 5.追加 append
  • 6.有效期 setex key seconds value

字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。

1.增加

  • 设置键值
set key value 
e.g. set name rossum  
  • 设置键的过期时间
setex key seconds value

# 设置name 值为rossum 为3秒的数据
setex name 3 rossum
  • 设置多个键值
mset key1 value1 key2 value2 ...
mset name jason age 18

2.删除

del key

127.0.0.1:6379> get name
"wang"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
# 查询一个空值 返回 nil 

flushdb  # 删除当前数据库中的所有Key
flushall  # 删除所有数据库中的key

3.修改

set key newvalue

127.0.0.1:6379> get name
"sun"
127.0.0.1:6379> set name wang
OK
127.0.0.1:6379> get name
"wang"

4.查询

  • 获取:根据键获取值,如果不存在此键则发那会(nul)
get key
get name
  • 根据多个键取多个值
mget key1 key2

5.追加值

append key value
e.g. append name honey
127.0.0.1:6379> set name1 wang
OK
127.0.0.1:6379> get name1
"wang"
127.0.0.1:6379> APPEND name1 wangyang
(integer) 12
127.0.0.1:6379> get name1
"wangwangyang"

二.键命令

  • 1.查 keys *
  • 2.删 del key
  • 3.是否存在 exists key
  • 4.键的类型 type
  • 5.设置key的过期时间 expire key seconds
  • 6.查看key的过期时间 ttl key

1.查找键,参数支持正则表达式

keys pattern
keys *   查看所有键
keys a*  查看名称中包含a的键

2.删除键及对应的值

del key1 key2

3.判断键是否存在,如果存在返回1,不存在返回0

exists key1

4.查看键对应的value的类型

type key

5.设置过期时间,以秒为单位

expire key seconds

6.查看有效时间,以秒为单位

ttl key

三.哈希hash

  • 1.增 hset hmset

  • 2.删 hdel 对象的属性的 Del将整个对象删除

  • 3.改 hset hmset

  • 4.查 hget hmget

  • 5.获取对象的所有属性 hkeys

  • 6.获取对象的所有值 hvals

  • 7.获取对象的所有属性和值 hgetall

  • hash⽤于存储对象,对象的结构为属性、值:对象:属性–值 person name “张三”

  • 的类型为string

1.增加

  • 设置单个属性
hset key field value
hset user name it       # 设置键 user的属性name为it
  • 设置多个属性
hmset key field1 value1 field2 value2 ...
hmset u2 name it age 11			设置键u2的属性name为it、属性age为11

2.删除

  • 删除整个hash键及值,使⽤del命令
  • 删除属性,属性对应的值会被⼀起删除
hdel key field1 field2 ...
hdel u2 age  删除键u2的属性age

3.修改

hset key newvalue

4.获取

  • 获取⼀个属性的值
hget key field
hget u2 name 获取键u2属性name的值
  • 获取多个属性的值
hmget key field1 field2 ...
  • 获取键u2属性nameage的值
hmget u2 name age
  • 获取所有属性的值
hvals key
  • 获取键u2所有属性的值
hvals u2
  • 获取指定键所有的属性
hkeys key
  • 获取键u2的所有属性
hkeys u2
  • 获取对象的所有属性和值
hgetall key

四.列表list

  • 1.增 lpush rpush

  • 2.删 lrem key count value: count 0 全删, -负数倒着删, 正数从头删除

  • 3.改 lset key index value

  • 4.查 lrange start stopindex

  • 5.插入 linsert key before/after oldvalue newvalue

  • 6.截取 ltrim key start stop

  • 列表的元素类型为string

  • 按照插⼊顺序排序

1.增加

  • 在左侧插入数据
lpush key value1 value2...
例1:从键为a1的列表左侧加⼊数据a 、 b 、c
lpush a1 a b c
  • 在右侧插入数据
rpush key value1 value2
例2:从键为a1的列表右侧加⼊数据01
rpush a1 0 1

2.删除

  • 删除指定元素

  • 将列表中前count次出现的值为value的元素移除

  • count > 0: 从头往尾移除

  • count < 0: 从尾往头移除

  • count = 0: 移除所有

lrem key count value3:向列表a2中加⼊元素a、b、a、b、a、b
lpush a2 a b a b a b
例4:从a2列表右侧开始删除2个b
lrem a2 -2 b
例5:查看列表a2的所有元素
lrange a2 0 -1

3.修改设置指定索引位置的元素值

  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素
lset key index value6:修改键为a1的列表中下标为1的元素值为z
lset a 1 z

4.查询

  • 返回列表⾥指定范围内的元素
    • startstop为元素的下标索引
    • 索引从左侧开始,第⼀个元素为0
    • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
lrange key start stop
例7:获取键为a1的列表所有元素
lrange a1 0 -1

5. 插入–在指定元素的前或后插⼊新元素

linsert key before或after 现有元素 新元素
例8:在键为a1的列表中元素b前加⼊3
linsert a1 before b 3

6.截取修剪

  • 修剪(截取) 在[start stop]区间内的元素,区间外的元素全部删除
ltrim key start stop

五.集合set

  • ⽆序集合
  • 元素为string类型
  • 元素具有唯⼀性,不重复
  • 说明:对于集合没有修改操作
    • 1.增 sadd
    • 2.删 srem
    • 3.查 smembers

1.增加

  • 添加元素
sadd ksy member1 member2 ...
例1:向键a3的集合中添加元素zhangsan、lisi、wangwu
sadd a3 zhangsan sili wangwu

2.删除

  • 删除指定元素
srem key2:删除键a3的集合中元素wangwu
srem a3 wangwu

3.获取

  • 返回所有的元素
smembers key2:获取键a3的集合中所有元素
smembers a3

六.有序集合zset

  • sorted set,有序集合
  • 元素为string类型
  • 元素具有唯⼀性,不重复
  • 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
  • 说明:没有修改操作
    • 1.增 zadd key score value score value score value
    • 2.删 zrem key value
    • 3.根据权重范围删除 zremrangebyscore key min max
    • 4.查 zrange key 0 -1
    • 5.根据权重查询 zrangebyscore key min max
    • 6.获取权重 zscore key value

1.增加

  • 添加
zadd key score1 member1 score2 member2 ...1:向键a4的集合中添加元素lisi、wangwu、zhaoliu、zhangsan,权重分别为4563
zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

2.删除

  • 删除指定元素
zrem key member1 member2 ...
例5:删除集合a4中元素zhangsan
zrem a4 zhangsan
  • 删除权重在指定范围的元素
zremrangebyscore key min max
例6:删除集合a4中权限在56之间的元素
zremrangebyscore a4 5 6

3.查询-获取

  • 返回指定返回内的元素
start、stop为元素的下标索引
索引从左侧开始,第⼀个元素为0
索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
zrange key start stop
例2:获取键a4的集合中所有元素
zrange a4 0 -1
  • 返回score值在min和max之间的成员
zrangebyscore key min max
例3:获取键a4的集合中权限值在56之间的成员
zrangebyscore a4 5 6
  • 返回成员member和score值
zscore key member
例4:获取键a4的集合中元素zhangsan的权重
zscore a4 zhangsan

七.Redis主从搭建

# ubuntu 20.04 Redis server v=5.0.7
1.cp /etc/redis
2.sudo cp redis.conf slave.conf

3.sudo vim redis.conf
    # bind 127.0.0.1 ::1
    bind ip地址

4.sudo vim slave.conf
	bind ip地址
	slaveof ip地址 6379
	port 6378 # 修改端口号
5.cp /etc/redis
	sudo redis-server redis.conf
    sudo redis-server slave.conf
6.redis-cli -h ip地址 info Replication
	# Replication
    role:master
    connected_slaves:1
    slave0:ip=ip地址,port=6378,state=online,offset=112,lag=0
    master_replid:1998d70bf016068e4cba05aff7e7036f219cfeb7
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:112
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:112
7.校验主写从读
	redis-cli -h ip地址 -p 6379
    set name SalvatoreSanfilippo
    redis-cli -h ip地址 -p 6378
	get name

八.Redis集群搭建

# ubuntu 20.04 Redis server v=5.0.7
1.
    cd /Desktop
    mkdir conf
    cd conf
    touch {7001..7006}.conf

2. sudo vim 7001.conf
	port 7001
    bind ip地址
    daemonize yes
    pidfile 7001.pid
    cluster-enabled yes
    cluster-config-file 7001_node.conf
    cluster-node-timeout 15000
    appendonly yes
3. 
	其他5个文件修改 port、pidfile、cluster-config-file三项均修改为文件的名字相同
4.  
	redis-server 7001.conf
  	redis-server 7002.conf
 	redis-server 7003.conf
  	redis-server 7004.conf
  	redis-server 7005.conf
  	redis-server 7006.conf

5.  # ps aux | grep redis
	redis-server ip地址:7001 [cluster]
	redis-server ip地址:7002 [cluster]
	redis-server ip地址:7003 [cluster]
	redis-server ip地址:7004 [cluster]
    redis-server ip地址:7005 [cluster]
	redis-server ip地址:7006 [cluster]
    
6.  # 创建集群
	redis-cli --cluster create ip地址:7001 ip地址:7002 ip地址:7003 ip地址:7004 ip地址:7005 ip地址:7006 --cluster-replicas 1
	[OK] All 16384 slots covered.

7. 数据验证
	redis-cli -h ip地址 -c -p 7001
    set name SalvatoreSanfilippo

九 哨兵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值