Redis 基本操作

Redis 简介

图形化管理工具:Redis Desktop Manager
用途:数据库、缓存和消息中间件
主要类型:

(本文整理自慕课网教程,涵盖 redis 常用操作)

Redis 安装和启动

brew install redis安装 redis。

安装完毕后:
redis-server,启动服务器
redis-cli,连接服务器

String 类型相关操作

  • set——设置值
  • get——获取值
  • mset——设置多个键值对
  • mget——获取多个键值对
  • append——添加字符串
  • del——删除
  • incr/decr——增加/减少 1
➜ ~ redis-cli
127.0.0.1:6379> set animal 'Cat'
OK
127.0.0.1:6379> get animal
"Cat"
127.0.0.1:6379> set animal 'Dog'
OK
127.0.0.1:6379> get animal
"Dog"
127.0.0.1:6379> append animal ' Cat'
(integer) 7
127.0.0.1:6379> get animal
"Dog Cat"
127.0.0.1:6379> mset user1 'Jhon' user2 'Amy'
OK
127.0.0.1:6379> get user1
"Jhon"
127.0.0.1:6379> get user2
"Amy"
127.0.0.1:6379> mget user1 user2 animal
1) "Jhon"
2) "Amy"
3) "Dog Cat"
127.0.0.1:6379> del user2
(integer) 1
127.0.0.1:6379> del user2
(integer) 0
127.0.0.1:6379> get user2
(nil)
127.0.0.1:6379> set num 10
OK
127.0.0.1:6379> get num
"10"
127.0.0.1:6379> decr num
(integer) 9
127.0.0.1:6379> get num
"9"
127.0.0.1:6379> incr num
(integer) 10
127.0.0.1:6379> get num
"10"
127.0.0.1:6379> get animal
"Dog Cat"
127.0.0.1:6379> del animal
(integer) 1
127.0.0.1:6379> get animal
(nil)
127.0.0.1:6379> set animal 'Cat' EX 5
OK
127.0.0.1:6379> get animal
"Cat"
127.0.0.1:6379> get animal
(nil)
127.0.0.1:6379> set user:john;age:45 '000000000'
OK
127.0.0.1:6379> get user:john;age:45
"000000000"
127.0.0.1:6379>

List 类型相关操作

  • lpush/rpush——从左/右插入数据
  • llen——获取列表的长度
  • lrange——获取指定长度的数据
  • ltrim——截取一定长度的数据
  • lpop/rpop——移除最左/右的元素并返回
  • lpushx/rpushx——key存在的时候才插入数据,不存在时不做任何处理
127.0.0.1:6379> lpush q1 'Jhon' 'Cat' 'Amy'
(integer) 3
127.0.0.1:6379> llen q1
(integer) 3
127.0.0.1:6379> lrange q1 0 -1
1) "Amy"
2) "Cat"
3) "Jhon"
127.0.0.1:6379> rpush q1 'Bob'
(integer) 4
127.0.0.1:6379> lrange q1 0 9999
1) "Amy"
2) "Cat"
3) "Jhon"
4) "Bob"
127.0.0.1:6379> lpush q1 'Okw'
(integer) 5
127.0.0.1:6379> lrange q1 0 -1
1) "Okw"
2) "Amy"
3) "Cat"
4) "Jhon"
5) "Bob"
127.0.0.1:6379> lpushx q1 'Zhang1'
(integer) 6
127.0.0.1:6379> lrange q1 0 -1
1) "Zhang1"
2) "Okw"
3) "Amy"
4) "Cat"
5) "Jhon"
6) "Bob"
127.0.0.1:6379> lpushx q2 'AMY'
(integer) 0
127.0.0.1:6379> lrange q1 0 -1
1) "Zhang1"
2) "Okw"
3) "Amy"
4) "Cat"
5) "Jhon"
6) "Bob"
127.0.0.1:6379> ltrim q1 0 2
OK
127.0.0.1:6379> lrange q1 0 -1
1) "Zhang1"
2) "Okw"
3) "Amy"
127.0.0.1:6379> lpop q1
"Zhang1"
127.0.0.1:6379> lrange q1 0 -1
1) "Okw"
2) "Amy"
127.0.0.1:6379> rpop q1
"Amy"
127.0.0.1:6379> lrange q1 0 -1
1) "Okw"
127.0.0.1:6379>

Set 类型相关操作

  • sadd/srem——添加/删除元素
  • sismember——判断是否为set的一个元素
  • smembers——返回该集合的所有成员
  • sdiff——返回一个集合与其他集合的差异
  • sinter——返回几个集合的交集
  • union——返回几个集合的并集
127.0.0.1:6379> sadd zoo Cat Dog
(integer) 2
127.0.0.1:6379> smembers zoo
1) "Dog"
2) "Cat"
127.0.0.1:6379> srem zoo Cat
(integer) 1
127.0.0.1:6379> srem zoo Cat
(integer) 0
127.0.0.1:6379> sismember zoo Cat
(integer) 0
127.0.0.1:6379> sismember zoo Dog
(integer) 1
127.0.0.1:6379> smembers zoo
1) "Dog"
127.0.0.1:6379> sadd zoo Cat
(integer) 1
127.0.0.1:6379> smembers zoo
1) "Dog"
2) "Cat"
127.0.0.1:6379> sadd zoo1 Cat Cow
(integer) 2
127.0.0.1:6379> smembers zoo1
1) "Cow"
2) "Cat"
127.0.0.1:6379> smembers zoo
1) "Dog"
2) "Cat"
127.0.0.1:6379> sdiff zoo zoo1
1) "Dog"
127.0.0.1:6379> sdiff zoo1 zoo
1) "Cow"
127.0.0.1:6379> sinter zoo zoo1
1) "Cat"
127.0.0.1:6379> sinter zoo1 zoo
1) "Cat"
127.0.0.1:6379> sunion zoo zoo1
1) "Cow"
2) "Dog"
3) "Cat"
127.0.0.1:6379>

Hash 类型相关操作

  • hset/hget——设置/获取散列值
  • hmset/hmget——设置/获取多对散列值
  • hsetnx——如果散列已经存在,则不设置
  • hkeys/hvals——返回所有Keys/Values
  • hlen——返回散列包含域(field)的数量
  • hdel——删除散列指定的域(field)
  • hexists——判断是否存在
127.0.0.1:6379> hset news:1 title 'News Title'
(integer) 1
127.0.0.1:6379> hset news:1 content 'News Content'
(integer) 1
127.0.0.1:6379> hget news:1 title
"News Title"
127.0.0.1:6379> hget news:1 content
"News Content"
127.0.0.1:6379> hmget news:1 title content
1) "News Title"
2) "News Content"
127.0.0.1:6379> hmset news:2 title 'Title2' content 'Content2' is_valid 1
OK
127.0.0.1:6379> hmget news:2 title content is_valid
1) "Title2"
2) "Content2"
3) "1"
127.0.0.1:6379> hkeys news:1
1) "title"
2) "content"
127.0.0.1:6379> hkeys news:2
1) "title"
2) "content"
3) "is_valid"
127.0.0.1:6379> hvals news:2
1) "Title2"
2) "Content2"
3) "1"
127.0.0.1:6379> hlen news:1
(integer) 2
127.0.0.1:6379> hlen news:2
(integer) 3
127.0.0.1:6379> hdel news:2 is_valid
(integer) 1
127.0.0.1:6379> hdel news:2 is_valid
(integer) 0
127.0.0.1:6379> hlen news:2
(integer) 2
127.0.0.1:6379> hexists news:2 is_valid
(integer) 0
127.0.0.1:6379> hset news:2 is_valid 1
(integer) 1
127.0.0.1:6379> hexists news:2 is_valid
(integer) 1
127.0.0.1:6379>