Redis The core object -redisObject
stay Redis It's called a core object redisObject, It's used to mean all of key and value Of , use redisObject Structure to represent String、Hash、List、Set、Zset Five types of data
redisObject The source code of is redis.sh in , Use C Language writing
- data type (type)
- Encoding mode (encoding)
- Data pointer (ptr)
- Virtual memory (vm)
- Other information
Redis data type
String( character string ) type
String yes Redis Basic data types , There are three ways to store its data structure int、raw、embstr, It can not only store strings , You can also store integers 、 Floating point numbers 、 Even binary data , such as jpg Images or serialized objects ( One String Maximum storage 512M)
Common commands :
mset key1 value1 key2 value2 key3 value3: Set multiple key value pairs at the same time
mset k1 name k2 age k3 gender
mget key1 key2 key3: Get the values of multiple keys at the same time
mget k1 k2 k3
append key value: Additional data
append k1 zhangsan
-->"namezhangsan"
getrange key m n : Intercept key Value of a certain segment of , From m-1 A to n-1 position
getrange k1 2 4
strlen key: obtain key Length of value
incr key: Self increasing ( Increasing , The default on the 1, Only if the string is an integer )
decr key: Self reduction ( Decline , Default self reduction 1, Only if the string is an integer )
set k1 2incr k1 --> 3decr k1 --> 2
incrby key 2: Custom Auto increment
decrby key 2: Customize how much to subtract
Hash( Hash ) type
Hash( Hash ) Type is from redis-2.0 The data structure comes after the version , Used to store the mapping between strings and strings .Hash There are two ways to implement objects , Namely Ziplist and hashtable, among hashtable Storage mode Key yes String type , value Also with key-value Storage in the form of .
Common commands :
hmset key field value [field value ...]: Batch settings hash key A batch of field value
127.0.0.1:6379> hmset user1 name tan age 18 sex maleOK
hget key field : Get one value value
127.0.0.1:6379> hget user1 name"tan"
hmget key field1 field2 ... fieldN: Batch acquisition hash key A batch of field Corresponding value
127.0.0.1:6379> hmget user1 name sex1) "li"2) "male"
hgetall key : Get all the key value pairs
127.0.0.1:6379> hgetall user11) "name"2) "tan"3) "age"4) "18"5) "sex"6) "male"
hset key field value: Set up hash key Corresponding field Of value
127.0.0.1:6379> hset user1 name li(integer) 0127.0.0.1:6379> hget user1 name"li"
hdel key field: Delete hash key Corresponding field Of value
127.0.0.1:6379> hdel user1 sex(integer) 1127.0.0.1:6379> hgetall user11) "name"2) "li"3) "age"4) "19"
hlen key: obtain hash key field The number of
127.0.0.1:6379> hlen user1(integer) 3
hincrby key field increment: hash key Corresponding field Of value Self increasing
127.0.0.1:6379> hincrby user1 age 1(integer) 19127.0.0.1:6379> hincrby user1 age -1(integer) 18127.0.0.1:6379> hincrby user1 age -2(integer) 16127.0.0.1:6379> hincrby user1 age 3(integer) 19
List( list ) type
List A type is a linked list structure , The main functions are push ( Into the stack )、pop( Out of the stack );List Type in the redis-3.2 Previous versions used ziplist and linkedlist Implemented , The later version introduced quicklist
Common commands :
lpush: stay key Corresponding list Add string elements to the header of
lpop: from key Corresponding list The head of the delete element
rpush: stay key Corresponding list Add string elements to the end of
lrange: Show key Corresponding list The elements of
lpush key value [value ...]: stay key Corresponding list Add string elements to the header of
127.0.0.1:6379> lpush mylist 1(integer) 1127.0.0.1:6379> lpush mylist 2(integer) 2127.0.0.1:6379> lpush mylist "3"(integer) 3
lrange key start stop: Show key Corresponding list The elements of
127.0.0.1:6379> lrange mylist 0 -11) "3"2) "2"3) "1"
rpush key value [value ...]: stay key Corresponding list Add string elements to the end of
127.0.0.1:6379> rpush mylist 4(integer) 4127.0.0.1:6379> lrange mylist 0 -11) "3"2) "2"3) "1"4) "4"
lindex key index: Print key Corresponding list The first index The element of bit
127.0.0.1:6379> lindex mylist 0"3"
lset key index value: modify key Corresponding list The first index The element of bit
127.0.0.1:6379> lset mylist 0 111OK127.0.0.1:6379> lrange mylist 0 -11) "111"2) "2"3) "1"4) "4"
lpop key: from key Corresponding list The head of the delete element
127.0.0.1:6379> lpop mylist"111"127.0.0.1:6379> lrange mylist 0 -11) "2"2) "1"3) "4"
rpop key: from key Corresponding list The tail of the delete element
127.0.0.1:6379> rpop mylist"4"127.0.0.1:6379> lrange mylist 0 -11) "2"2) "1"
llen key: Print key Corresponding list The length of
127.0.0.1:6379> llen mylist(integer) 2
lrem key count value: from key Corresponding list Delete an element count On behalf of the number one ,count be equal to 0 On behalf of all
127.0.0.1:6379> lrange mylist 0 -11) "3"2) "2"3) "1"127.0.0.1:6379> lrem mylist 0 3(integer) 1127.0.0.1:6379> lrange mylist 0 -11) "2"2) "1"
linsert key BEFORE|AFTER pivot value: from key Corresponding list Insert an element
127.0.0.1:6379> lrange mylist 0 -11) "10"2) "5"3) "2"4) "1"127.0.0.1:6379> linsert mylist before 10 99(integer) 5127.0.0.1:6379> lrange mylist 0 -11) "99"2) "10"3) "5"4) "2"5) "1"127.0.0.1:6379> linsert mylist after 2 999(integer) 6127.0.0.1:637.........