redis 学习笔记(一)

  由于之前在空闲时间自学了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的尾部添加字符串元素。


发布了25 篇原创文章 · 获赞 20 · 访问量 20万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章