Redis

 Типы данных Redis

    Строки (strings)

    Списки (lists)

    Множества (sets)

    Хеш-таблицы (hashes)

    Упорядоченные множества (sorted sets)


Создание, выборка, модификация, удаление и базовая информация об объектах.

set test:1:string "my binary safe string"                                                   

get test:1:string                        

getset test:1:string "other value"                                                                          

type test:1:string                       

set test:1:value "487"                   

rename test:1:value test:1:value                                                                   

exists  test:1:vlaue                     

exists test:1:value                                                                      

keys test:1:*                            

del test:1:value

keys test:1:*


Время жизни объекта.

ttl test:1:string

(integer) -1

expire test:1:string 6000

(integer) 1

ttl test:1:string

(integer) 5997


Транзакции.

Для реализации транзакций в Redis используются следующие основные команды:

    MULTI — начать запись команд для транзакции.

    EXEC — выполнить записанные команды.

    DISCARD — удалить все записанные команды.

    WATCH — команда, выполняется в случае, если другие клиенты не изменили значение переменной. Иначе EXEC не выполнит записанные команды.

multi                 

OK                                          

set test:1:trValue "1"

QUEUED                                      

incr test:1:trValue   

QUEUED                                      

decr test:1:trValue   

QUEUED                                      

exec                  

1) OK                                       


Строковые операции.

set test:1:string "hello"            

OK                                                         

append test:1:string " world!"       

(integer) 12                                               

get test:1:string                    

"hello world!"                                             

strlen test:1:string                 

(integer) 12                                               

getrange test:1:string 6 10          

"world"                                                    

setrange test:1:string 6 "habrahabr!"

(integer) 16                                               

get test:1:string                    

"hello habrahabr!"        

                                 

Операции над числами.

set test:1:int 1    
OK                                        
incr test:1:int     
(integer) 2                               
decr test:1:int     
(integer) 1                               
incrby test:1:int 20
(integer) 21                              
decrby test:1:int 15
(integer) 6                               


Списки

rpush test:1:message "Hello!"
rpush test:1:message "My name"
rpush test:1:message "is Alex"
lrange test:1:message 0 2
llen test:1:message
lpop test:1:message
lpop test:1:message
llen test:1:message

Множества, упорядоченные множества

sadd test:1:fruits "banana"                                       
sadd test:1:fruits "apple"                                        
sadd test:1:fruits "strawberry"                                   
sadd test:1:yellowThings "banana"                                 
sadd test:1:yellowThings "apple"                                  
sadd test:1:redThings "strawberry"                                                                                                            
scard test:1:fruits                                               
sdiff test:1:fruits test:1:yellowThings                           
sdiffstore test:1:noYellowFruits test:1:fruits test:1:yellowThings
sinter test:1:yellowThings test:1:fruits                          
1) "banana"                                                                             
2) "apple"                                                                              
sismember test:1:fruits "banana"                                                                                                           
sismember test:1:fruits "tomato"                                                                                                              
smembers test:1:noYellowFruits                                                                                                       
smove test:1:yellowThings test:1:redThings "apple"                
smembers test:1:redThings                                         
1) "strawberry"
2) "apple"
spop test:1:redThings
"apple"
srandmember test:1:fruits
"apple"
srem test:1:fruits "banana"
sunion test:1:yellowThings test:1:redThings
1) "strawberry"
2) "banana"
sunionstore test:1:allThings test:1:yellowThings test:1:redThings
smembers test:1:allThings                                         
1) "strawberry"                                                                         
2) "banana"

Создать упорядоченное множество

zadd hackers 1953 "Richard Stallman"  
(integer) 1                                                 
zadd hackers 1940 "Alan Kay"          
(integer) 1                                                 
zadd hackers 1965 "Yukihiro Matsumoto"
(integer) 1                                                 
zadd hackers 1916 "Claude Shannon"    
(integer) 1                                                 
zadd hackers 1969 "Linus Torvalds"    
(integer) 1                                                 
zadd hackers 1912 "Alan Turing"       
(integer) 1                                                 
zrange hackers 0 -1                   
1) "Alan Turing"                                            
2) "Claude Shannon"                                         
3) "Alan Kay"                                               
4) "Richard Stallman"                                       
5) "Yukihiro Matsumoto"                                     
6) "Linus Torvalds"                                         
zrevrange hackers 0 -1                
1) "Linus Torvalds"                                         
2) "Yukihiro Matsumoto"                                     
3) "Richard Stallman"                                       
4) "Alan Kay"                                               
5) "Claude Shannon"                                         
6) "Alan Turing"                                            
zrangebyscore hackers -inf 1950       
1) "Alan Turing"                                            
2) "Claude Shannon"                                         
3) "Alan Kay"                                               
zremrangebyscore hackers 1940 1960    
(integer) 2                                                 
zrange hackers 0 -1                   
1) "Alan Turing"                                            
2) "Claude Shannon"                                         
3) "Yukihiro Matsumoto"                                     
4) "Linus Torvalds" 

Хеш-таблицы

hset users:1 name "Andrew"             
(integer) 1                                                  
hset users:1 email "andrew@example.com"
(integer) 1                                                  
hkeys users:1                          
1) "name"                                                    
2) "email"                                                   
hvals users:1                          
1) "Andrew"                                                  
2) "andrew@example.com"                                      
hgetall users:1                        
1) "name"                                                    
2) "Andrew"                                                  
3) "email"                                                   
4) "andrew@example.com"                                      
hset users:1 test 1                    
(integer) 1                                                  
hincrby users:1 test 123               
(integer) 124                                                
hvals users:1                          
1) "Andrew"                                                  
2) "andrew@example.com"                                      
3) "124"                                                     
hdel users:1 test                      
(integer) 1                                                  
hvals users:1                          
1) "Andrew"                                                  
2) "andrew@example.com"   

Признаки "плохого кода"

Кратко рассмотрим 12 признаков, когда код можно улучшить: 1. Duplicated Code  — иногда повторяющийся код не всегда несет в себе пользу. Выде...