redis简单学习2-redis的数据类型

键可以包含字符串strings,哈希hashes,链表lists,集合sets,有序集合sorted sets 

1.    Strings数据类型以及操作

string是最简单的类型,一个key对应一个valuestring类型是二进制安全的 
redisstring可以包含任何数据,比如JPG图片或序列化的对象 

Set

设置key对应的值为string类型的value 
例如:添加一个name=lijie的键值对 
redis 127.0.0.1:6379> set name lijie 
ok 

获取设置的name 
redis 127.0.0.1:6379> get name 

setnx

设置key 对应的值为string类型的value 
如果key已经存在,返回0nxnot exists的意思 

127.0.0.1:6379> set name hanchao

OK

127.0.0.1:6379> setnx name ha

(integer) 0

setex

设置key 对应的值为string类型的value 并指定此键值对应的有效期 
例如:添加一个haircolor=red的键值对,并指定有效期为10 
redis 127.0.0.1:6379> setex haircolor 10 red 

setrange

设置指定keyvalue值的子字符串 
例如:将lijie126邮箱替换为gmail邮箱 
如果替换的字符串没有原来的字符串长,则长于替换的字符串的字符将被保留 
redis 127.0.0.1:6379> get name 
"[email protected]
redis 127.0.0.1:6379> setrange name 6 gmail.com 
(integer) 15 
redis 127.0.0.1:6379> get name 
"[email protected]

mset

一次设置多个key的值,成功返回OK表示所有的值都设置了,失败返回0表示没有任何值被设置 
redis 127.0.0.1:6379> mset key1 lijie1 key2 lijie2 
ok 
redis 127.0.0.1:6379> get key1 
"lijie1" 
redis 127.0.0.1:6379> get key2 
"lijie2" 

msetnx

一次设置多个key的值,成功返回OK表示所有的值都设置了 
失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key 
如果有键值存在则所有值都不会被设置,返回

127.0.0.1:6379> msetnx key1 value1 key2 value2

(integer) 1

get

获取key对应的string值,如果key不存在则返回nil 

getset

设置key的值,并返回key的旧值 

127.0.0.1:6379> get name

"hanchao"

127.0.0.1:6379> getset name tom

"hanchao"

127.0.0.1:6379> get name

"tom"

getrange

获取keyvalue值的子字符串 
redis 127.0.0.1:6379> getrange name 0 5 
0
表示起始位置 5表示结束字符位置 就是截取0-5 的字符 

mget

一次获取多个key的值,如果对应key不存在,则对应返回nil 

127.0.0.1:6379> mget key1 key2 key3

1) "value1"

2) "value2"

3) (nil)

incr

key的值做++操作,并返回新的值 

127.0.0.1:6379> set key1 123

OK

127.0.0.1:6379> incr key1

(integer) 124

incrby

incr类似,加指定值,key不存在的时候会设置key,并认为原来的value
redis 127.0.0.1:6379> incrby key4 3 key4+3 
redis 127.0.0.1:6379> incrby key4 -2 key4-2 

decr

key的值做--操作 

127.0.0.1:6379> set age 11

OK

127.0.0.1:6379> decr age

(integer) 10

decrby

decr类似,减指定值 

127.0.0.1:6379> get key4

"6"

127.0.0.1:6379> decrby key4 2

(integer) 4

127.0.0.1:6379>

append

给指定key的字符串追加value,返回新字符串值的长度 
127.0.0.1:6379> get name

"hanchao123"

127.0.0.1:6379> append name @gmail.com

(integer) 20

127.0.0.1:6379> get name

[email protected]

strlen

取指定keyvalue值的长度 

127.0.0.1:6379> strlen name

(integer) 7

del

删除指定key的值 
redis 127.0.0.1:6379> del name 
(integer) 1 

2.    hash类型以及操作

Redis hash 是一个string类型的fieldvalue的映射表 
它的添加,删除操作都是0(1)(平均
hash特别适合用于存储对象 
相较于将对象的每个字段存成单个string类型, 
将一个对象存储在hash类型中会占用更少的内存 并且可以更方便的存取整个对象 

hset

设置hash field 为指定值,如果key不存在,则先创建 
redis 127.0.0.1:6379> hset myhash field1 hello 

hsetnx

设置hash field 为指定值,如果key不存在,则先创建,如果存在则返回

127.0.0.1:6379> hset myhash field1 jerry

(integer) 0

hmset

同时设置hash的多个field 

127.0.0.1:6379> hmset myhash field3 value3 field4 value4

OK

hget

获取指定的hash field 
hget myhash field1

hmget

获取全部指定的hash field 

127.0.0.1:6379> hmget myhash field1 field3

1) "jerry"

  1. "value3"

hincrby

指定的hash field 加上给定的值 

127.0.0.1:6379> hset myhash age 20

(integer) 1

127.0.0.1:6379> hincrby myhash age 10

(integer) 30

hexists

测试指定field是否存在 

127.0.0.1:6379> hexists myhash fields

(integer) 0

127.0.0.1:6379> hexists myhash field1

(integer) 1

hlen

返回指定hashfield数量 

127.0.0.1:6379> hlen myhash

(integer) 5

hdel

删除指定hashfield 
redis 127.0.0.1:6379> hdel myhash age 

hkeys

返回hash的所有field 
redis 127.0.0.1:6379> hkeys myhash 

hvals

返回hash的所有value 

  1. 0.0.1:6379> hvals myhash

  2. 1) "jerry"

  3. 2) "world"

  4. 3) "value3"

  5. 4) "value4"

  6. 5) "20"

hgetall

获取某个hash中全部的field以及value 
redis 127.0.0.1:6379> hgetall myhash 

 

 

3.    list类型以及操作

list是一个链表结构,主要功能是push,pop,获取一个范围的所有值等等 
操作中key理解为链表的名字 
redis
list类型起始就是一个每个子元素都是string类型的双向链表 
可以通过push,pop操作从链表的头部或者尾部添加删除元素 
这样list既可以做栈,又可以作为队列 

lrange

获取给定key范围的list元素 
redis 127.0.0.1:6379> lrange mylist 0 -1 
1) "hello" 
2) "world" 

lpush

key对应list头部添加字符串元素 
redis 127.0.0.1:6379> lpush mylist "word" 
(integer) 1 
redis 127.0.0.1:6379> lpush mylist "hello" 
(integer) 2 
redis 127.0.0.1:6379> lrange mylist 0 -1 //
lrange 0表示从头部取,-1表示到尾部 
1) "hello" 
2) "world" 

rpush

key对应list尾部添加字符串元素 
redis 127.0.0.1:6379> rpush mylist2 "world" 
(integer) 1 
redis 127.0.0.1:6379> rpush mylist2 "hello" 
(integer) 2 
redis 127.0.0.1:6379> lrange mylist2 0 -1 
1) "world" 
2) "hello" 

linsert

key对应list特定位置前或后添加字符串 
redis 127.0.0.1:6379> rpush mylist3 "world" 
(integer) 1 
redis 127.0.0.1:6379> linsert mylist3 before "world" "hello" 
(integer) 2 
redis 127.0.0.1:6379>lrange mylist3 0 -1 
1) "hello" 
2) "world" 

lset

设置list中指定下标的元素值 
redis 127.0.0.1:6379> rpush mylist4 "hello" 
(integer) 1 
redis 127.0.0.1:6379> lset mylist4 0 "world" 
ok 
redis 127.0.0.1:6379> lrange mylist4 0 -1 
1) "world" 

lrem

key对应list中删除n个和value相同的元素 n<0 从尾删除 n=0 全部删除 
redis 127.0.0.1:6379> rpush mylist5 "hello" 
(integer) 1 
redis 127.0.0.1:6379> rpush mylist5 "hello" 
(integer) 2 
redis 127.0.0.1:6379> lrem mylist5 1 "hello" 
(integer) 1 

ltrim

保留指定key的值范围内的数据 
redis 127.0.0.1:6379> rpush mylist8 "one" 
(integer) 1 
redis 127.0.0.1:6379> rpush mylist8 "two" 
(integer) 2 
redis 127.0.0.1:6379> ltrim mylist8 1 -1 
(integer) 1 
redis 127.0.0.1:6379> lrange mylist8 0 -1 
1) "two" 

lpop

list头部删除元素,并返回删除元素 
redis 127.0.0.1:6379> lrange mylist 0 -1 
1) "hello" 
2) "world" 
redis 127.0.0.1:6379> lpop mylist 
"hello" 
redis 127.0.0.1:6379> lrange mylist 0 -1 
1) "world" 

rpop

list尾部删除元素,并返回删除元素 
redis 127.0.0.1:6379> lrange mylist 0 -1 
1) "hello" 
2) "world" 
redis 127.0.0.1:6379> rpop mylist 
"world" 
redis 127.0.0.1:6379> lrange mylist 0 -1 
1) "hello" 

rpoplpush

从第一个list的尾部移除元素并添加到第二个list的头部 
redis 127.0.0.1:6379> lrange mylist5 0 -1 
1) "three" 
2) "hello" 
redis 127.0.0.1:6379> lrange mylist6 0 -1 
1) "hello" 
2) "foo" 
redis 127.0.0.1:6379> rpoplpush mylist5 mylist6 
"hello" 
redis 127.0.0.1:6379> lrange mylist5 0 -1 
1) "three" 
redis 127.0.0.1:6379> lrange mylist6 0 -1 
1) "hello" 
2) "hello" 
3) "foo" 

 

lindex

返回名称为keylistindex位置的元素 
redis 127.0.0.1:6379> lrange mylist5 0 -1 
1) "three" 
2) "foo" 
redis 127.0.0.1:6379> lindex mylist5 0 
"three" 
redis 127.0.0.1:6379> lindex mylist5 1 
"foo" 

llen

返回key对应list的长度 
redis 127.0.0.1:6379> llen mylist5 
(integer) 2 

 

你可能感兴趣的:(redis,redis数据类型)