目录
一、string 类型及操作
二、hash 类型及操作
三、list 类型和操作
四、set 类型及操作
五、zset类型及操作
六、其他相关命令
一、string 类型及操作
string是最简单的类型,一个key对应一个value,string类型是二进制安全的。redis的string可以包含任何数据。
set # 设置key对应的值为string类型
# 例如:我们添加一个name=kernel的键值对应
# redis127.0.0.1:6379>set name kernel
setnx # 设置key对应的值为string类型,如果 key已经存在,返回0,nx是not exist的意思
get # 获取key对应的string值,如果key不存在返回nil
mset & mget # 同时设置和获取多个键值对
incrby # 对key的值做加加(指定值)操作,并返回新的值
del # 删除一个已创建的key
- 示例
# 设置key对应的值为string类型
set name daboluo
get name
# 设置key对应的值为string类型,如果 key已经存在,返回0,setnx 不进行覆盖,nx是not exist.
setnx name zhangsan
# set 进行覆盖
set name zhangsan
# 覆盖name键的内容为laowang,新增age键并写入18的内容。
mset name laowang age 18
# 查看所有的键
keys *
# 同时查看多个键的内容
mget name age
# 自增自减
INCRBY age 1
INCRBY age 1
INCRBY age -1
INCRBY age -1
二、hash 类型及操作
Redis hash是一个string类型的field(字段)和value的映射表,它的添加、删除操作都是0(1)平均;hash特别适合用于存储对象,相较于将对象的每个字段存成单个string类型,将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
hset # 设置hash field 为指定值,如果key不存在,则先创建
hget # 获取表中key 对应的field
hmset # 同时设置多个键值对
hmge # 同时获取多个键值对
hdel # 删除指定表中的某一个键值对
hgetall # 列出表中的所有键值对
- 示例
# 在 daboluo 表中创建name zhangsan、name2 lisi、name3 laowang的键值对
hset daboluo name zhangsan name2 lisi name3 laowang
# 获取 daboluo 表中的多个字段
hmget daboluo name name2 name3
# 列出 daboluo 表中所有键和值
HGETALL daboluo
# 删除 daboluo表中的 name2 数据
HDEL daboluo name2
三、list 类型和操作
list是一个链表结构,主要功能是push、pop、获取一个范围内的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或尾部添加删除元素。
lpush # 在key对应list的头部添加字符串元素。
rpush # 从尾部添加字符串元素
lpop # 从尾部删除
rpop # 从头部删除
lrange # 从指定链表中获取指定范围的元素
- 示例
# 创建先入后出的链表结构
LPUSH zs zhangsan 18 man 1888888
# 显示zs链表的内容,0空格-1代表从头写到尾
LRANGE zs 0 -1
# 创建先入先出的链表结构
RPUSH zs1 zhangsan 18 man 1888888
# 从尾部删除 zs1 的数据
lpop zs1
四、set 类型及操作
set是集合,他是string类型的无序集合。Set是通过hash table实现的,合/并集 、交集、差集。通过这些操作我们可以实现社交网站中的好友推荐和blog的tag功能。集合不允许有重复值。
sadd # 添加一个或多个元素到集合中
smembers # 获取集合里面所有的元素
srem # 从集合中删除指定的一个或多个元素
spop # 随机从集合中删除一个元素,并返回
scard # 获取集合里面的元素个数
sdiff # 返回集合1与集合2的差集。以集合1为主
sinter # 获得两个集合的交集
sunion # 获得指定集合的并集
- 示例
# 添加多个元素到集合中
sadd teacher zhaqngsan lisi wangwu
sadd num1 1 2 3 4
sadd num2 3 4 5 6
# 取交集
SINTER num1 num2
# 取并集
SUNION num1 num2
# 以num1为参照物取差集
SDIFF num1 num2
# 以num2为参照物取差集
以num2为参照物取差集
# 统计集合里的元素个数
SCARD teacher
# 从集合中删除指定的一个或多个元素
srem num1 1 2
# 获取集合里所有的元素
# 没有按顺序排序
SMEMBERS num1
SMEMBERS num2
SMEMBERS teacher
# 随机删除集合里的一个元素
spop teacher
五、zset类型及操作
zset是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的mysql表,一列存的value,一列存的顺序。操作中key理解为zset的名字。
zadd # 向一个指定的有序集合中添加元素,每一个元素会对应的有一个分数。
# 可以指定多个分数/成员组合。如果一个指定的成员已经在对应的有序集合中了.
# 那么其分数就会被更新成最新的,并且该成员会重新调整到正确的位置,以确保集合有序。
# 分数的值必须是一个表示数字的字符串。
zrange # 返回有序集合中,指定区间内的成员。其中成员按照score(分数)值从小到大排序。
# 有相同score值的成员按照字典顺序来排列。
zrem # 删除有序集合中指定的值
zcard # 返回有序集合元素的个数
- 示例
# 创建有序集合
zadd zteacher 1 zhangsan 2 lisi 0 wangwu 2 laowang 1 laoli 0 laoliu
# 显示zteacher表里全部元素
zrange zteacher 0 -1
# 和分数一起显示
zrange zteacher 0 -1 withscores
# 添加值
zadd zteacher 1 xbz
# 显示全部元素
zrange zteacher 0 -1
# 统计zteacher有序集合元素的个数
ZCARD zteaacher
六、其他相关命令
keys # 按照键名查找指定的键。支持通配符(* ?等)
exists # 确认一个键是否存在(1表示存在)
del # 删除一个键(通用)
expire # 设置一个键(已存在)的过期时间,如果键已经过期,将会被自动删除
ttl # 以秒为单位,返回指定键的剩余有效时间
# 当 key 不存在时,返回 -2 。
# 当 key 存在但没有设置剩余生存时间时,返回 -1 。
# 否则,以秒为单位,返回 key 的剩余生存时间。
select # 选择一个数据库,默认连接的数据库是0,可以支持共16个数据库。
# 在配置文件中,通过databases 16 关键字定义。
move # 将当前数据库的键移动到指定的数据库中
type # 返回键的类型
dbsize # 返回当前库中键的数量(所有类型)
save # 保存所有的数据。很少在生产环境直接使用SAVE 命令.
# 因为它会阻塞所有的客户端的请求,可以使用BGSAVE 命令代替.
# 如果在BGSAVE命令的保存数据的子进程发生错误的时.
# 用 SAVE命令保存最新的数据是最后的手段。
info # 获取服务器的详细信息
config get # 获取redis服务器配置文件中的参数。支持通配符
flushdb # 删除当前数据库中所有的数据
flushall # 删除所有数据库中的所有数据
- 示例
# 删除无序集合num1
del num1
# 查看所有集合
keys *
# 设置倒计时30秒
EXPIRE name 30
# 查看倒计时还有多久
ttl name
# 选择一个数据库,16和17无法选择,因为从0到15一共16个数据库
select 17
select 16
select 15
# 将teacher库移动到15库下
move teacher 15
keys *
select 15
# 查看teacher集合的类型,为set无序集合
type teacher
# 查看表中的元素
SMEMBERS teacher
# 显示当前库中键的数量
DBSIZE
keys *
# 手动立刻保存,否则只会,达到配置文件里的配置才能保存
save
# 查看保存的信息
cd /usr/local/redis/data
# 查看文件类型
file *
more redis.aof.1.incr.aof
file redis.rdb
cat redis.rdb
# 获取服务器详细信息
redis-cli info
#查看cpu的详细信息
infor cpu
#查看当前是什么角色(主数据库或从数据库)
info replication
# 获取redis服务器配置文件中的参数。支持通配符
redis-cli
config get *
# 查询daemonize的值
config get daemonize
# 查看dir的存放目录
congif get dir
# 不用登录到服务器里,实现同样的效果
redis-cli dir