目录

一、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类型中会占用更少的内存,并且可以更方便的存取整个对象。

redis health check failed 关闭 redis关闭命令_string类

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操作从链表的头部或尾部添加删除元素。

redis health check failed 关闭 redis关闭命令_string类_02

lpush     # 在key对应list的头部添加字符串元素。

rpush     # 从尾部添加字符串元素

lpop      # 从尾部删除

rpop      # 从头部删除

lrange    # 从指定链表中获取指定范围的元素

redis health check failed 关闭 redis关闭命令_数据库_03

  • 示例
# 创建先入后出的链表结构
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功能。集合不允许有重复值。

redis health check failed 关闭 redis关闭命令_数据库_04

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