由于之前在空闲时间自学了redis,所以留下了些许自学的笔记;觉得有必要留在博客中以便后续使用中方便自身查阅。
(一)、redis 的数据类型级操作:
1.【Strings 类型和操作】
String 类型:一个key对于一个value,最简单的数据类型,二进制安全的;Redis的String可以包含任何数据,可以是图片jpg或者是序列化的对象。
操作:
set: 设置key 对应的值为String类型的value。
setnx:设置key 对应的值为String类型的value;如果key已经存在,则返回0,并且不设置新的value值。;否则更新并返回1.nx的是not exist的意思。
demo:
redis 127.0.0.1:6379> setnx age 20
(integer) 1
redis 127.0.0.1:6379> get age
"20"
redis 127.0.0.1:6379> setnx age 40
(integer) 0
redis 127.0.0.1:6379> get age
"20"
setex:设置key 对应的值为String类型的value;并指定键值的有效期。
demo:设置name的值为leo 十秒内有效
redis 127.0.0.1:6379> setex name 10 leo
OK
redis 127.0.0.1:6379> get name
"leo"
redis 127.0.0.1:6379> get name
(nil)
setrange:设置指定key值的只字符串。
demo:设置leo的邮箱 从126 替换成163.com
redis 127.0.0.1:6379> set email [email protected]
OK
redis 127.0.0.1:6379> get email
"[email protected]"
redis 127.0.0.1:6379> setrange email 3 @163.com
(integer) 11
redis 127.0.0.1:6379> get email
[email protected]
【注】:但是这个替换只会替换几个长度, 要是替换的长度小于原来value的长度的话,原来的后面字符会保留,要是大于的话,则会自动填充。
demo:
redis 127.0.0.1:6379> set email [email protected]
OK
redis 127.0.0.1:6379> get email
"[email protected]"
redis 127.0.0.1:6379> setrange email 3 nardo
(integer) 15
redis 127.0.0.1:6379> get email
"leonardo163.com"
mset:表示一次设置多个key的值,成功则返回ok 表示所有的值都设置了,失败了则返回0;表示没有任何一个值被设置。
msetnx:表示一次设置多个key的值,成功则返回ok 表示所有的值都设置了,失败了则返回0;表示没有任何一个值被设置。但是不会覆盖已经存在的值
demo:
redis 127.0.0.1:6379> mset key1 leo key2 leonardo
OK
redis 127.0.0.1:6379> get key1
"leo"
redis 127.0.0.1:6379> get key2
"leonardo"
redis 127.0.0.1:6379> msetnx key4 lll key5 xxx key2 xxx
(integer) 0
redis 127.0.0.1:6379> get key4
(nil)
redis 127.0.0.1:6379>
get:
getset: 设置一个key的新值 返回一个key的旧值.
getrange :获取value的子字符串
mget:获取多个key的值。
demo:
redis 127.0.0.1:6379> getrange email 0 6
"leonard"
redis 127.0.0.1:6379>
incr : 代表对某一个值 来做++(递增操作),并且返回新的值.
incrby:以指定的数 进行自增,并且返回新的值,
decr: 代表对某一个值 来做--(递减操作),并且返回新的值.
decrby:以指定的数 进行自减,并且返回新的值.
append:给指定key的字符串追加value,返回新字符串值的长度.
2.【Hashes数据类型及操作】
hash类型:redis的hash类型是string类型field和value的映射表,所有的新增和删除都是0(1);特别适合于存储对象。对于String类型而言,hash占用内存更少;并且更方便存储整个对象。
hset:设定hash field 为指定值,如果key 不存在,则先创建。
[注意]:可以把key user:001 看做张表,然后name、age 为表中的field。
hset:设定hash field 为指定值,如果key 不存在,则先创建。如果存在,则返回0;而且field映射的value不会被覆盖
hmset:批量设置hash field的值,如果key 不存在,则先创建。
hmget:批量查询field的值。
hincrby:对hash field的值以指定的数 进行自增,并且返回新的值。
hexists:校验hash field进行校验,字段存在返回1, 不存在返回0.
hlen:返回hash中filed的数量数。
hdel:删除hash中的field
hkeys:返回hash中的所有(field)字段
hvals:返回hash中的所有值(value)
hgetall:同时返回某个hash中的所有的field以及value
3.【list类型和操作】
redis 中list类型的每一样子元素都是string类型的双向链表,可以通过push、pop操作对链表的头部或者尾部进行添加删除元素,所以这样的类型
可以使栈,也可以是队列。【操作中key理解为链表的名字】
lpush:在key对应的list的头部添加字符串元素。
rpush:在key对应的list的尾部添加字符串元素。