02 Redis数据操作

徐亮伟, 江湖人称标杆徐。多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作。
个人博客"徐亮伟架构师之路"累计受益数万人。
笔者Q:552408925、572891887
架构师群:471443208

Redis连接方式

redis-cli客户端
1: mysql命令用来跟Mysql服务器进行交互
2: redis-cli命令用来跟redis服务器进行交互

1: 使用redis-cli客户端可以登录到redis服务器
redis-cli #可以使用-h来指定主机,-p来指定端口。默认登录127.0.0.1的6379端口。
redis-cli -h xxx.xxx.xxx.xxx -p 6379
exit  #退出当前会话(ctrl+d)
shutdown #关闭redis服务器,命令不区分大小写

Redis字符串操作

2: redis字符串操作 (set key value)
set name bgx #增加
get name   #获取
set name bgx2 #修改
del name   #删除,返回1代表删除成功
set name bgx
GET name  #命令不区分大小写
set NAME bgx
get name
get NAME  #key区分大小写

3: 非交互式方式操作redis服务器,后续写一些批量脚本
redis-cli set name bgx
redis-cli get name
redis-cli del name

Redis列表操作

redis的key都是string,value支持字符串、列表、集合等

1: redis列表的操作,有序的可重复的
lpush names bgx  #增加
lpush names bgx1  #增加
lpush names bgx2
lpush names bgx3
lpush names bgx4
lpush names bgx  #增加相同的值
lpush names 6666
lrange names 0 -1   #获取全部
lrange names 0 1   #获取第一个和第二个
LREM names 1 bgx#移除一个bgx元素
LREM names 0 bgx#移除所有bgx元素
LPOP names    #后进先出
RPOP names    #先进先出
LSET names 0 bgx5 #更改第1个元素
del names

2: redis集合的操作(无序、元素不重复)
sadd ages 25 #增加
sadd ages 30
sadd ages 35
sadd ages 40
sadd ages 45
sadd ages 50
sadd ages 25 #失败,唯一
SMEMBERS ages #获取集合的所有值
srem ages 25 #移除25的元素
spop ages #随机移除元素
SISMEMBER ages 35 #ages集合中是否有35的元素

RedisHash操作

1: redis hash操作
hset info name 'bgx' #增加
hset info age 20
hset info location 'shanghai'
HGETALL info    #获取所有info信息
HGET info name   #获取name值
hdel info name age   #删除,可以指定多个

del info
hmset info name 'bgx' age 25 location 'hangzhou' #增加多个值

Redis发布订阅操作

2: redis的发布订阅
subscribe bgx
publish bgx 'my name is bgx'

Redis批量添加数据

1: 批量往redis server上插入数据
for line in `seq -w 50`;do 
  redis-cli  set name_${line} bgx_${line}
done

2: 查看key的情况
keys *   #查看所有key的命令,不建议使用,上千万的key会使redis服务器堵塞
RANDOMKEY #随意返回一个key
SCAN 0  #可利用scan的索引取所有的key,使用程序可以循环取出key