127.0.0.1:6379 set name inter OK 127.0.0.1:6379 get name inter 127.0.0.1:6379 set name millan 127.0.0.1:6379 get name millan #第一种情况,setnx判断name存在值,所以后面的设值返回(integer)0,设值不成功 127.0.0.1:6379 set name inter OK 127.0.
- 127.0.0.1:6379 > set name inter
- OK
|
- 127.0.0.1:6379> get name
- “inter”
|
- 127.0.0.1:6379> set name millan
- 127.0.0.1:6379> get name
- “millan”
|
- #第一种情况,setnx判断name存在值,所以后面的设值返回(integer)0,设值不成功
- 127.0.0.1:6379> set name inter
- OK
- 127.0.0.1:6379> setnx name millan
- (integer) 0
- #对一个没有设过值的变量进行设值,返回(integer)1,通过get方法验证,设值成功
- 127.0.0.1:6379> setnx new_name inter
- (integer) 1
- 127.0.0.1:6379> get new_name
- "inter"
|
- #设置wind的value是hot,并且设置时间为10秒,10秒之内有效,10秒过后,此键值对失效
- 127.0.0.1:6379> setex wind 10 hot
- OK
- 127.0.0.1:6379> get wind
- "hot"
- 127.0.0.1:6379> get wind
- (nil)
|
- 127.0.0.1:6379> set name djy@163.com
- OK
- 127.0.0.1:6379> setrange name 4 gmail.com
- (integer) 13
- 127.0.0.1:6379> get name
- "djy@gmail.com"
|
- 127.0.0.1:6379> mset key1 djy1 key2 djy2 key3 djy3
- OK
- 127.0.0.1:6379> get key2
- "djy2"
- 127.0.0.1:6379> get key3
- "djy3"
- 127.0.0.1:6379> get key1
- "djy1"
|
- 127.0.0.1:6379> msetnx key1 djyisasmartguy key5 yes
- (integer) 0
- 127.0.0.1:6379> get key5
- (nil)
- 127.0.0.1:6379> get key1
- "djy1"
|
- 127.0.0.1:6379> getset key1 djyisasmartguy
- "djy1"
- 127.0.0.1:6379> get key1
- "djyisasmartguy"
|
- 127.0.0.1:6379> getrange key1 8 10
- "art"
- 127.0.0.1:6379>
|
- 127.0.0.1:6379> mget key1 key2
- 1) "djyisasmartguy"
- 2) "djy2"
|
- 127.0.0.1:6379> set key5 10
- OK
- 127.0.0.1:6379> incr key5
- (integer) 11
|
- #incrby key5 10是指增溢10次,如果是-10就是减10次
- 127.0.0.1:6379> incrby key5 10
- (integer) 21
- 127.0.0.1:6379> get key5
- "21"
|
- 127.0.0.1:6379> decr key5
- (integer) 20
- 127.0.0.1:6379> decrby key5 6
- (integer) 14
|
- 127.0.0.1:6379> get key1
- "djyisasmartguy"
- 127.0.0.1:6379> append key1 true
- (integer) 18
- 127.0.0.1:6379> get key1
- "djyisasmartguytrue"
|
- 127.0.0.1:6379> strlen key1
- (integer) 18
|
Redis数据库的学习与实践—redis的数据类型
Redis的数据类型:
1:Strings类型及操作:
String类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。
(1)Set方法,设置key对应的值为String类型的value。
例如:设置一个name=inter的键值对:
取值:
覆盖值:
后面设置的值,会将之前设置的值给覆盖掉。
如果后面在设置值的时候不想覆盖之前的值,可以使用:setnx
(2)Setnx在操作的时候,会首先判断这个name里面是否存在值,只有当name里面不包含值的情况下,才会设置成功。(nx代表not exist的意思)
例如:
(3)setex
设置key对应的值为string类型的value,并指定此键值对对应的有效期。
在其他的设置方法中,不设置有效期,则代表其永久有效。
例如:
(4)setrange
设置指定key的value值的子字符串
(5)mset
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置。
(6)msetnx
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key。
只要有一个键没有设置成功,那么其他一起设置的键都不会设置成功。
(7)get
获取key对应的string值,如果key不存在返回nil。
getset
设置key的新值,并返回key的旧值。
(8)getrange
获取key的value值的子字符串。
(9)mget
一次获取多个key的值,如果对应key不存在则对应返回nil。
(10)incr
自增溢,对key的值做加加操作,并返回新的值。
(11)incrby
同incr类似,加指定值,key不存在时候会设置key,并认为原来的value是0。
(12)decr
对key的值做减减操作。
(13)decrby
同decr类似,减指定值。
(14)append
给指定key的字符串追加value,返回新字符串值的长度。
(15)strlen
取指定key的value值的长度。
2:Hashes类型及操作:
Redis hash是一个string类型的field和value的映射表。它的添加,删除操作都是0(1)(平均)。Hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
hset
设置hash field为指定值,如果key不存在,则先创建。
127.0.0.1:6379> hset myhash field1 hello
(integer) 1
127.0.0.1:6379> hget myhash field1
"hello"
|
hsetnx
设置hash field为指定值,如果key不存在,则先创建。如果存在返回0。
127.0.0.1:6379> hsetnx myhash field1 helloyou
(integer) 0
|
hmset
同时设置hash的多个field。
127.0.0.1:6379> hmset myhash field2 helloyou field3 hellome
OK
127.0.0.1:6379> hmget myhash field2 field3
1) "helloyou"
2) "hellome"
|
hincrby
指定的hashfield加上给定值。
127.0.0.1:6379> hset myhash field4 30
(integer) 1
127.0.0.1:6379> hincrby myhash field4 10
(integer) 40
127.0.0.1:6379> hget myhash field4
"40"
127.0.0.1:6379>
|
hexists
测试指定field是否存在。
127.0.0.1:6379> hexists myhash field1
(integer) 1
|
hlen
返回指定hash的field数量。
127.0.0.1:6379> hlen myhash
(integer) 4
|
hdel
删除指定hash的field。
127.0.0.1:6379> hdel myhash field4
(integer) 1
127.0.0.1:6379>
|
hkeys
返回hash的所有field。
127.0.0.1:6379> hkeys myhash
1) "field1"
2) "field2"
3) "field3"
|
hvals
返回hash的所有value。
127.0.0.1:6379> hvals myhash
1) "hello"
2) "helloyou"
3) "hellome"
|
(10)hgetall
获取某个hash中全部的field和value。
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field2"
4) "helloyou"
5) "field3"
6) "hellome"
|
3:List类型及操作:
List是一个链表结构,主要功能是push,pop,获取一个范围的所有值等等,操作中Key理解为链表的名字。
Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过puth,pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。
对Redis的数据类型的介绍就到这里,还有两种数据类型,Set类型和Zset类型就不详细介绍了。