Redis – PHP ”; Previous Next Before you start using Redis in your PHP programs, you need to make sure that you have Redis PHP driver and PHP set up on the machine. You can check PHP tutorial for PHP installation on your machine. Installation Now, let us check how to set up Redis PHP driver. You need to download the phpredis from github repository https://github.com/nicolasff/phpredis. Once you’ve downloaded it, extract the files to phpredis directory. On Ubuntu, install the following extension. cd phpredis sudo phpize sudo ./configure sudo make sudo make install Now, copy and paste the content of “modules” folder to the PHP extension directory and add the following lines in php.ini. extension = redis.so Now, your Redis PHP installation is complete Connect to Redis Server <?php //Connecting to Redis server on localhost $redis = new Redis(); $redis->connect(”127.0.0.1”, 6379); echo “Connection to server sucessfully”; //check whether server is running or not echo “Server is running: “.$redis->ping(); ?> When the program is executed, it will produce the following result. Connection to server sucessfully Server is running: PONG Redis PHP String Example <?php //Connecting to Redis server on localhost $redis = new Redis(); $redis->connect(”127.0.0.1”, 6379); echo “Connection to server sucessfully”; //set the data in redis string $redis->set(“tutorial-name”, “Redis tutorial”); // Get the stored data and print it echo “Stored string in redis:: ” .$redis→get(“tutorial-name”); ?> When the above program is executed, it will produce the following result. Connection to server sucessfully Stored string in redis:: Redis tutorial Redis php List Example <?php //Connecting to Redis server on localhost $redis = new Redis(); $redis->connect(”127.0.0.1”, 6379); echo “Connection to server sucessfully”; //store data in redis list $redis->lpush(“tutorial-list”, “Redis”); $redis->lpush(“tutorial-list”, “Mongodb”); $redis->lpush(“tutorial-list”, “Mysql”); // Get the stored data and print it $arList = $redis->lrange(“tutorial-list”, 0 ,5); echo “Stored string in redis:: “; print_r($arList); ?> When the above program is executed, it will produce the following result. Connection to server sucessfully Stored string in redis:: Redis Mongodb Mysql Redis PHP Keys Example <?php //Connecting to Redis server on localhost $redis = new Redis(); $redis->connect(”127.0.0.1”, 6379); echo “Connection to server sucessfully”; // Get the stored keys and print it $arList = $redis->keys(“*”); echo “Stored keys in redis:: ” print_r($arList); ?> When the program is executed, it will produce the following result. Connection to server sucessfully Stored string in redis:: tutorial-name tutorial-list Print Page Previous Next Advertisements ”;
Category: redis
Redis – Useful Resources
Redis – Useful Resources ”; Previous Next The following resources contain additional information on Redis. Please use them to get more in-depth knowledge on this topic. Useful Video Courses Redis and PHP Online Course 23 Lectures 40 mins Skillbakery More Detail Docker Course for .Net and Angular Developers 75 Lectures 5.5 hours Rahul Sahay More Detail Complete SignalR on ASP.NET Core 54 Lectures 1 hours Fiodar Sazanavets More Detail Introduction to Kubernetes using Docker 37 Lectures 4.5 hours Stone River ELearning More Detail Vue 3 and Laravel: Breaking a Monolith to Microservices 156 Lectures 14 hours Packt Publishing More Detail The Complete Practical Docker Guide 194 Lectures 18.5 hours Packt Publishing More Detail Print Page Previous Next Advertisements ”;
Redis – Partitioning
Redis – Partitioning ”; Previous Next Partitioning is the process of splitting your data into multiple Redis instances, so that every instance will only contain a subset of your keys. Benefits of Partitioning It allows for much larger databases, using the sum of the memory of many computers. Without partitioning you are limited to the amount of memory that a single computer can support. It allows to scale the computational power to multiple cores and multiple computers, and the network bandwidth to multiple computers and network adapters. Disadvantages of Partitioning Operations involving multiple keys are usually not supported. For instance, you can”t perform the intersection between two sets if they are stored in the keys that are mapped to different Redis instances. Redis transactions involving multiple keys cannot be used. The partitioning granuliary is the key, so it is not possible to shard a dataset with a single huge key like a very big sorted set. When partitioning is used, data handling is more complex. For instance, you have to handle multiple RDB/AOF files, and to get a backup of your data you need to aggregate the persistence files from multiple instances and hosts. Adding and removing the capacity can be complex. For instance, Redis Cluster supports mostly transparent rebalancing of data with the ability to add and remove nodes at runtime. However, other systems like client-side partitioning and proxies don”t support this feature. A technique called Presharding helps in this regard. Types of Partitioning There are two types of partitioning available in Redis. Suppose we have four Redis instances, R0, R1, R2, R3 and many keys representing users like user:1, user:2, … and so forth. Range Partitioning Range partitioning is accomplished by mapping ranges of objects into specific Redis instances. Suppose in our example, the users from ID 0 to ID 10000 will go into instance R0, while the users from ID 10001 to ID 20000 will go into instance R1 and so forth. Hash Partitioning In this type of partitioning, a hash function (eg. modulus function) is used to convert the key into a number and then the data is stored in different-different Redis instances. Print Page Previous Next Advertisements ”;
Redis – Quick Guide
Redis – Quick Guide ”; Previous Next Redis – Overview Redis is an open source, advanced key-value store and an apt solution for building highperformance, scalable web applications. Redis has three main peculiarities that sets it apart. Redis holds its database entirely in the memory, using the disk only for persistence. Redis has a relatively rich set of data types when compared to many key-value data stores. Redis can replicate data to any number of slaves. Redis Advantages Following are certain advantages of Redis. Exceptionally fast − Redis is very fast and can perform about 110000 SETs per second, about 81000 GETs per second. Supports rich data types − Redis natively supports most of the datatypes that developers already know such as list, set, sorted set, and hashes. This makes it easy to solve a variety of problems as we know which problem can be handled better by which data type. Operations are atomic − All Redis operations are atomic, which ensures that if two clients concurrently access, Redis server will receive the updated value. Multi-utility tool − Redis is a multi-utility tool and can be used in a number of use cases such as caching, messaging-queues (Redis natively supports Publish/Subscribe), any short-lived data in your application, such as web application sessions, web page hit counts, etc. Redis Versus Other Key-value Stores Redis is a different evolution path in the key-value DBs, where values can contain more complex data types, with atomic operations defined on those data types. Redis is an in-memory database but persistent on disk database, hence it represents a different trade off where very high write and read speed is achieved with the limitation of data sets that can”t be larger than the memory. Another advantage of in-memory databases is that the memory representation of complex data structures is much simpler to manipulate compared to the same data structure on disk. Thus, Redis can do a lot with little internal complexity. Redis – Environment In this chapter, you will learn about the environmental setup for Redis. Install Redis on Ubuntu To install Redis on Ubuntu, go to the terminal and type the following commands − $sudo apt-get update $sudo apt-get install redis-server This will install Redis on your machine. Start Redis $redis-server Check If Redis is Working $redis-cli This will open a redis prompt. redis 127.0.0.1:6379> In the above prompt, 127.0.0.1 is your machine”s IP address and 6379 is the port on which Redis server is running. Now type the following PING command. redis 127.0.0.1:6379> ping PONG This shows that Redis is successfully installed on your machine. Install Redis Desktop Manager on Ubuntu To install Redis desktop manager on Ubuntu, just download the package from https://redisdesktop.com/download Open the downloaded package and install it. Redis desktop manager will give you UI to manage your Redis keys and data. Redis – Configuration In Redis, there is a configuration file (redis.conf) available at the root directory of Redis. Although you can get and set all Redis configurations by Redis CONFIG command. Syntax Following is the basic syntax of Redis CONFIG command. redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME Example redis 127.0.0.1:6379> CONFIG GET loglevel 1) “loglevel” 2) “notice” To get all configuration settings, use * in place of CONFIG_SETTING_NAME Example redis 127.0.0.1:6379> CONFIG GET * 1) “dbfilename” 2) “dump.rdb” 3) “requirepass” 4) “” 5) “masterauth” 6) “” 7) “unixsocket” 8) “” 9) “logfile” 10) “” 11) “pidfile” 12) “/var/run/redis.pid” 13) “maxmemory” 14) “0” 15) “maxmemory-samples” 16) “3” 17) “timeout” 18) “0” 19) “tcp-keepalive” 20) “0” 21) “auto-aof-rewrite-percentage” 22) “100” 23) “auto-aof-rewrite-min-size” 24) “67108864” 25) “hash-max-ziplist-entries” 26) “512” 27) “hash-max-ziplist-value” 28) “64” 29) “list-max-ziplist-entries” 30) “512” 31) “list-max-ziplist-value” 32) “64” 33) “set-max-intset-entries” 34) “512” 35) “zset-max-ziplist-entries” 36) “128” 37) “zset-max-ziplist-value” 38) “64” 39) “hll-sparse-max-bytes” 40) “3000” 41) “lua-time-limit” 42) “5000” 43) “slowlog-log-slower-than” 44) “10000” 45) “latency-monitor-threshold” 46) “0” 47) “slowlog-max-len” 48) “128” 49) “port” 50) “6379” 51) “tcp-backlog” 52) “511” 53) “databases” 54) “16” 55) “repl-ping-slave-period” 56) “10” 57) “repl-timeout” 58) “60” 59) “repl-backlog-size” 60) “1048576” 61) “repl-backlog-ttl” 62) “3600” 63) “maxclients” 64) “4064” 65) “watchdog-period” 66) “0” 67) “slave-priority” 68) “100” 69) “min-slaves-to-write” 70) “0” 71) “min-slaves-max-lag” 72) “10” 73) “hz” 74) “10” 75) “no-appendfsync-on-rewrite” 76) “no” 77) “slave-serve-stale-data” 78) “yes” 79) “slave-read-only” 80) “yes” 81) “stop-writes-on-bgsave-error” 82) “yes” 83) “daemonize” 84) “no” 85) “rdbcompression” 86) “yes” 87) “rdbchecksum” 88) “yes” 89) “activerehashing” 90) “yes” 91) “repl-disable-tcp-nodelay” 92) “no” 93) “aof-rewrite-incremental-fsync” 94) “yes” 95) “appendonly” 96) “no” 97) “dir” 98) “/home/deepak/Downloads/redis-2.8.13/src” 99) “maxmemory-policy” 100) “volatile-lru” 101) “appendfsync” 102) “everysec” 103) “save” 104) “3600 1 300 100 60 10000” 105) “loglevel” 106) “notice” 107) “client-output-buffer-limit” 108) “normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60” 109) “unixsocketperm” 110) “0” 111) “slaveof” 112) “” 113) “notify-keyspace-events” 114) “” 115) “bind” 116) “” Edit Configuration To update configuration, you can edit redis.conf file directly or you can update configurations via CONFIG set command. Syntax Following is the basic syntax of CONFIG SET command. redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE Example redis 127.0.0.1:6379> CONFIG SET loglevel “notice” OK redis 127.0.0.1:6379> CONFIG GET loglevel 1) “loglevel” 2) “notice” Redis – Data Types Redis supports 5 types of data types. Strings Redis string is a sequence of bytes. Strings in Redis are binary safe, meaning they have a known length not determined by any special terminating characters. Thus, you can store anything up to 512 megabytes in one string. Example redis 127.0.0.1:6379> SET name “tutorialspoint” OK redis 127.0.0.1:6379> GET name “tutorialspoint” In the above example, SET and GET are Redis commands, name is the key used in Redis and tutorialspoint is the string value that is stored in Redis. Note − A string value can be at max 512 megabytes in length. Hashes A Redis hash is a collection of key value pairs. Redis Hashes are maps between string fields and string values. Hence, they are used to represent objects. Example redis 127.0.0.1:6379> HMSET user:1 username tutorialspoint password tutorialspoint points 200 OK redis 127.0.0.1:6379> HGETALL user:1 1) “username” 2) “tutorialspoint” 3)
Redis – Benchmarks
Redis – Benchmarks ”; Previous Next Redis benchmark is the utility to check the performance of Redis by running n commands simultaneously. Syntax Following is the basic syntax of Redis benchmark. redis-benchmark [option] [option value] Example Following example checks Redis by calling 100000 commands. redis-benchmark -n 100000 PING_INLINE: 141043.72 requests per second PING_BULK: 142857.14 requests per second SET: 141442.72 requests per second GET: 145348.83 requests per second INCR: 137362.64 requests per second LPUSH: 145348.83 requests per second LPOP: 146198.83 requests per second SADD: 146198.83 requests per second SPOP: 149253.73 requests per second LPUSH (needed to benchmark LRANGE): 148588.42 requests per second LRANGE_100 (first 100 elements): 58411.21 requests per second LRANGE_300 (first 300 elements): 21195.42 requests per second LRANGE_500 (first 450 elements): 14539.11 requests per second LRANGE_600 (first 600 elements): 10504.20 requests per second MSET (10 keys): 93283.58 requests per second Following is a list of available options in Redis benchmark. Sr.No Option Description Default Value 1 -h Specifies server host name 127.0.0.1 2 -p Specifies server port 6379 3 -s Specifies server socket 4 -c Specifies the number of parallel connections 50 5 -n Specifies the total number of requests 10000 6 -d Specifies data size of SET/GET value in bytes 2 7 -k 1=keep alive, 0=reconnect 1 8 -r Use random keys for SET/GET/INCR, random values for SADD 9 -p Pipeline <numreq> requests 1 10 -h Specifies server host name 11 -q Forces Quiet to Redis. Just shows query/sec values 12 –csv Output in CSV format 13 -l Generates loop, Run the tests forever 14 -t Only runs the comma-separated list of tests 15 -I Idle mode. Just opens N idle connections and wait Example Following example shows the multiple usage options in Redis benchmark utility. redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q SET: 146198.83 requests per second LPUSH: 145560.41 requests per second Print Page Previous Next Advertisements ”;
Redis – Java
Redis – Java ”; Previous Next Before you start using Redis in your Java programs, you need to make sure that you have Redis Java driver and Java set up on the machine. You can check our Java tutorial for Java installation on your machine. Installation Now, let us see how to set up Redis Java driver. You need to download the jar from the path Download jedis.jar. Make sure to download the latest release of it. You need to include the jedis.jar into your classpath. Connect to Redis Server import redis.clients.jedis.Jedis; public class RedisJava { public static void main(String[] args) { //Connecting to Redis server on localhost Jedis jedis = new Jedis(“localhost”); System.out.println(“Connection to server sucessfully”); //check whether server is running or not System.out.println(“Server is running: “+jedis.ping()); } } Now, let”s compile and run the above program to test the connection to Redis server. You can change your path as per your requirement. We are assuming the current version of jedis.jar is available in the current path. $javac RedisJava.java $java RedisJava Connection to server sucessfully Server is running: PONG Redis Java String Example import redis.clients.jedis.Jedis; public class RedisStringJava { public static void main(String[] args) { //Connecting to Redis server on localhost Jedis jedis = new Jedis(“localhost”); System.out.println(“Connection to server sucessfully”); //set the data in redis string jedis.set(“tutorial-name”, “Redis tutorial”); // Get the stored data and print it System.out.println(“Stored string in redis:: “+ jedis.get(“tutorial-name”)); } } Now, let”s compile and run the above program. $javac RedisStringJava.java $java RedisStringJava Connection to server sucessfully Stored string in redis:: Redis tutorial Redis Java List Example import redis.clients.jedis.Jedis; public class RedisListJava { public static void main(String[] args) { //Connecting to Redis server on localhost Jedis jedis = new Jedis(“localhost”); System.out.println(“Connection to server sucessfully”); //store data in redis list jedis.lpush(“tutorial-list”, “Redis”); jedis.lpush(“tutorial-list”, “Mongodb”); jedis.lpush(“tutorial-list”, “Mysql”); // Get the stored data and print it List<String> list = jedis.lrange(“tutorial-list”, 0 ,5); for(int i = 0; i<list.size(); i++) { System.out.println(“Stored string in redis:: “+list.get(i)); } } } Now, let”s compile and run the above program. $javac RedisListJava.java $java RedisListJava Connection to server sucessfully Stored string in redis:: Redis Stored string in redis:: Mongodb Stored string in redis:: Mysql Redis Java Keys Example import redis.clients.jedis.Jedis; public class RedisKeyJava { public static void main(String[] args) { //Connecting to Redis server on localhost Jedis jedis = new Jedis(“localhost”); System.out.println(“Connection to server sucessfully”); //store data in redis list // Get the stored data and print it List<String> list = jedis.keys(“*”); for(int i = 0; i<list.size(); i++) { System.out.println(“List of stored keys:: “+list.get(i)); } } } Now, let”s compile and run the above program. $javac RedisKeyJava.java $java RedisKeyJava Connection to server sucessfully List of stored keys:: tutorial-name List of stored keys:: tutorial-list Print Page Previous Next Advertisements ”;
Redis – Discussion
Discuss Redis ”; Previous Next Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server, since the keys can contain strings, hashes, lists, sets and sorted sets. Redis is written in C. This tutorial provides good understanding on Redis concepts, needed to create and deploy a highly scalable and performance-oriented system. Print Page Previous Next Advertisements ”;
Redis – Server
Redis – Server ”; Previous Next Redis server commands are basically used to manage Redis server. Example Following example explains how we can get all statistics and information about the server. redis 127.0.0.1:6379> INFO # Server redis_version:2.8.13 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:c2238b38b1edb0e2 redis_mode:standalone os:Linux 3.5.0-48-generic x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.7.2 process_id:3856 run_id:0e61abd297771de3fe812a3c21027732ac9f41fe tcp_port:6379 uptime_in_seconds:11554 uptime_in_days:0 hz:10 lru_clock:16651447 config_file: # Clients connected_clients:1 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 # Memory used_memory:589016 used_memory_human:575.21K used_memory_rss:2461696 used_memory_peak:667312 used_memory_peak_human:651.67K used_memory_lua:33792 mem_fragmentation_ratio:4.18 mem_allocator:jemalloc-3.6.0 # Persistence loading:0 rdb_changes_since_last_save:3 rdb_bgsave_in_progress:0 rdb_last_save_time:1409158561 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:0 rdb_current_bgsave_time_sec:-1 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok # Stats total_connections_received:24 total_commands_processed:294 instantaneous_ops_per_sec:0 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 evicted_keys:0 keyspace_hits:41 keyspace_misses:82 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:264 # Replication role:master connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:10.49 used_cpu_user:4.96 used_cpu_sys_children:0.00 used_cpu_user_children:0.01 # Keyspace db0:keys = 94,expires = 1,avg_ttl = 41638810 db1:keys = 1,expires = 0,avg_ttl = 0 db3:keys = 1,expires = 0,avg_ttl = 0 Redis Server Commands Following table lists some basic commands related to Redis server. Sr.No Command & Description 1 BGREWRITEAOF Asynchronously rewrites the append-only file 2 BGSAVE Asynchronously saves the dataset to the disk 3 CLIENT KILL [ip:port] [ID client-id] Kills the connection of a client 4 CLIENT LIST Gets the list of client connections to the server 5 CLIENT GETNAME Gets the name of the current connection 6 CLIENT PAUSE timeout Stops processing commands from the clients for a specified time 7 CLIENT SETNAME connection-name Sets the current connection name 8 CLUSTER SLOTS Gets an array of Cluster slot to node mappings 9 COMMAND Gets an array of Redis command details 10 COMMAND COUNT Gets total number of Redis commands 11 COMMAND GETKEYS Extracts the keys given a full Redis command 12 BGSAVE Asynchronously saves the dataset to the disk 13 COMMAND INFO command-name [command-name …] Gets an array of specific Redis command details 14 CONFIG GET parameter Gets the value of a configuration parameter 15 CONFIG REWRITE Rewrites the configuration file with the in-memory configuration 16 CONFIG SET parameter value Sets a configuration parameter to the given value 17 CONFIG RESETSTAT Resets the stats returned by INFO 18 DBSIZE Returns the number of keys in the selected database 19 DEBUG OBJECT key Gets debugging information about a key 20 DEBUG SEGFAULT Makes the server crash 21 FLUSHALL Removes all the keys from all databases 22 FLUSHDB Removes all the keys from the current database 23 INFO [section] Gets information and statistics about the server 24 LASTSAVE Gets the UNIX time stamp of the last successful save to the disk 25 MONITOR Listens for all the requests received by the server in real time 26 ROLE Returns the role of the instance in the context of replication 27 SAVE Synchronously saves the dataset to the disk 28 SHUTDOWN [NOSAVE] [SAVE] Synchronously saves the dataset to the disk and then shuts down the server 29 SLAVEOF host port Makes the server a slave of another instance, or promotes it as a master 30 SLOWLOG subcommand [argument] Manages the Redis slow queries log 31 SYNC Command used for replication 32 TIME Returns the current server time Print Page Previous Next Advertisements ”;
Redis – Pipelining
Redis – Pipelining ”; Previous Next Redis is a TCP server and supports request/response protocol. In Redis, a request is accomplished with the following steps − The client sends a query to the server, and reads from the socket, usually in a blocking way, for the server response. The server processes the command and sends the response back to the client. Meaning of Pipelining The basic meaning of pipelining is, the client can send multiple requests to the server without waiting for the replies at all, and finally reads the replies in a single step. Example To check the Redis pipelining, just start the Redis instance and type the following command in the terminal. $(echo -en “PINGrn SET tutorial redisrnGET tutorialrnINCR visitorrnINCR visitorrnINCR visitorrn”; sleep 10) | nc localhost 6379 +PONG +OK redis :1 :2 :3 In the above example, we will check Redis connection by using PING command. We have set a string named tutorial with value redis. Later, we get that keys value and increment the visitor number three times. In the result, we can see that all commands are submitted to Redis once, and Redis provides the output of all commands in a single step. Benefits of Pipelining The benefit of this technique is a drastically improved protocol performance. The speedup gained by pipelining ranges from a factor of five for connections to localhost up to a factor of at least one hundred over slower internet connections. Print Page Previous Next Advertisements ”;
Redis – Backup
Redis – Backup ”; Previous Next Redis SAVE command is used to create a backup of the current Redis database. Syntax Following is the basic syntax of redis SAVE command. 127.0.0.1:6379> SAVE Example Following example creates a backup of the current database. 127.0.0.1:6379> SAVE OK This command will create a dump.rdb file in your Redis directory. Restore Redis Data To restore Redis data, move Redis backup file (dump.rdb) into your Redis directory and start the server. To get your Redis directory, use CONFIG command of Redis as shown below. 127.0.0.1:6379> CONFIG get dir 1) “dir” 2) “/user/tutorialspoint/redis-2.8.13/src” In the output of the above command /user/tutorialspoint/redis-2.8.13/src is the directory, where Redis server is installed. Bgsave To create Redis backup, an alternate command BGSAVE is also available. This command will start the backup process and run this in the background. Example 127.0.0.1:6379> BGSAVE Background saving started Print Page Previous Next Advertisements ”;