天天看点

redis 学习使用(1)

redis 首先需要了解 五种数据结构 和 基础的命令

redis中键的基本操作 本来想放在最后 但有助于后面的学习

每种数据结构都有它们独特的命令 而操作它们的命令却是相同的 如

del key

当key存在时删除它

exists key

检查key是否存在

type key

返回key的数据类型

语法:

命令 键名

假如key存在时,类型为String 执行命令

set key abc

key的值变成abc

执行命令

hmset key name 1

由于数据结构不同,则会出错

所以需要使用

del key

先删除,在执行上面的命令

String 字符串

基本类型 是二进制安全的(即保证文件不会因为某些操作而遭到损坏)

可以存放各种数据 如图片 序列化对象 最大可以存储512M的数据

一个key对应一个值

String结构
key => value
           

存取命令

取:

set 键的名字 值

存:

get 键的名字

redis 学习使用(1)

输入的时候乱码了 这个问题有待解决 并不影响使用

redis 学习使用(1)

如果是这样的话,需要在启动客户端的时候 加上 --raw

redis-cli --raw

redis 学习使用(1)

经过测试,发现不加符号和加单引号和双引号,没有区别(暂不确定)

Hash 哈希

简单来说是 一个key 对应多个键值对 相比String 相当于 把值 替换成了键值对

观察了一下,通过对比String的命令,发现了命令命名的规律 Hash 的命令前都带上了h(即取Hash的H) 比如

取:

hget 键的名字 键的名字

存:

hset 键的名字 键的名字 值

看到这里是不是很懵 怎么有两个键的名字 第一个是hash的键 第二个是hash存储的键值对的键

Hash结构
key(这里是第一个键名) => [
		key(这里是第二个键名) => value,
		key => value
]
           

避免混淆以后把hash里面的键名叫做(field)字段

还有操作多个的命令 前缀多为hm

取:

hmget 键的名字 字段1 字段2

存:

hmset 键的名字 字段1 值1 字段2 值2

还有一些常用的命令 如

hgetall key

获取指定key的所有field(字段)和值

hexists key field

查看key中的字段是否存在

hlen key

获取key中字段的数量

List(列表)

这个相比于上个简单一些 相比 String 相当于 一个值替换成了多个值

按照插入顺序排序

List结构
	key=>[
		value,
		value,
		value
	]
           

发现除了前两个后面的的命令好像都找不到相似的地方了,不过开头的前缀大多数还是根据首字母来的

rpush 键名 值1 值2 ....

向列表添加值,添加到最后

lrange 键名 开始的索引 结束的索引

范围取值 索引从0开始

llen 键名

获得列表的长度

lindex 键名 索引

根据索引取到对应的值

linsert 键名 before(之前)|after(之后) 值1 值2

将值2插入值1的之前或之后

lrem 键名 count value

当count为正数时,从表头开始移除count个值为value的元素

当count为负数时从表尾开始移除count个值为value的元素,count为0时 移除所有值为value的元素

Set(集合)

String类型的无序集合

Set的结构 与List有些类似 特点是 无序,值是唯一的

常用命令

sadd 键名 值1 值2 ...

向集合添加一个或多个成员(值)

smembers 键名

返回集合中的所有成员(值)

sismember 键名 值

判断值是否是集合中的成员(值)

scard 键名

返回集合的成员数

sinter 键名 键名 ...

返回多个集合中的交集(相同的值)

Zset(有序集合)

有序集合和集合一样 也是String类型的集合 且不允许重复的元素

不同的是 每个元素都会关联一个Double类型的标识

标识可以重复 redis会通过数字将集合元素从小到大排序

常用命令

zadd 键名 数字1 值1 数字2 值2 ....

向集合添加一个或多个元素,或更新已存在元素的标识

zcard 键名

返回成员数(长度)

zrem 键名 值1 值2 ....

从集合中移除一个或多个成员(值)

zrange 键名 开始索引 结束索引

根据索引取出成员 不包含标识

zcount 键名 开始标识 结束标识

取出在标识范围中的成员数

zrangebyscore 键名 开始索引 结束索引 [withscores] [limit offset count]

根据索引区间得到成员 withscores 选项是否取得标识 limit offset count 则和mysql 的 select * from table limit offset count 相似

如果想取得全部的成员 在不知道的最小和最大索引时 可以使用 -inf +inf

redis 学习使用(1)

如有错误 还望指出