CentOSRHEL Based

How To Install Memcached on CentOS Stream 10

Install Memcached on CentOS Stream 10

In today’s fast-paced digital world, website loading speed is critical. A slow website can lead to poor user experience, higher bounce rates, and decreased search engine rankings. Fortunately, technologies like Memcached can significantly improve website performance. Memcached is a high-performance, distributed memory object caching system designed to speed up dynamic web applications by alleviating database load. This guide provides a comprehensive walkthrough on how to install Memcached on CentOS Stream 10.

CentOS Stream 10 represents the latest iteration of the CentOS project, offering cutting-edge features and improvements. Caching is an indispensable technique for modern web applications, and Memcached stands out as a powerful tool for this purpose. By the end of this article, you will have a solid understanding of how to set up Memcached, configure it for optimal performance, and integrate it with your web applications.

Understanding Memcached

What is Memcached?

Memcached is an open-source, distributed memory object caching system. It is designed to cache data in RAM to reduce the number of times a database or external API needs to be accessed. It acts as an in-memory key-value store, where data is stored as key-value pairs for quick retrieval. This approach is particularly useful for applications that frequently fetch the same data, such as social networks, e-commerce sites, and content management systems.

How Memcached Works

Memcached works by allocating a certain amount of RAM on a server and then allowing applications to store and retrieve data from this memory. When an application needs to access data, it first checks Memcached. If the data is present (a “cache hit”), Memcached quickly returns the data. If the data is not in Memcached (a “cache miss”), the application retrieves the data from the original source (e.g., a database), stores it in Memcached, and then serves it to the user. Subsequent requests for the same data will then be served directly from Memcached, reducing latency and database load.

Benefits of Memcached

The advantages of using Memcached are numerous. Performance improvements are the most significant, as it drastically reduces response times for frequently accessed data. This leads to a better user experience and improved website speed. It also results in reduced database load. By caching data in memory, Memcached minimizes the number of queries to the database, which can significantly reduce database server load. This frees up database resources for other tasks and improves overall system scalability.

Scalability is another key benefit. Memcached can be distributed across multiple servers, allowing you to scale your caching infrastructure as your application grows. This distributed architecture provides redundancy and ensures high availability. The distributed nature of Memcached makes it a fault-tolerant caching solution, ensuring that your application remains responsive even if some cache nodes fail.

Use Cases

Memcached is suitable for a wide range of applications. Social networks use Memcached to cache user profiles, friend lists, and activity streams. E-commerce sites cache product catalogs, shopping cart data, and session information. Content management systems (CMS) like WordPress and Drupal use Memcached to cache pages, posts, and database queries. These scenarios highlight Memcached’s versatility and its ability to enhance performance across diverse applications. Real-time analytics platforms can also benefit from Memcached by caching frequently accessed data insights, speeding up query response times and improving the user experience.

Memcached vs. Other Caching Solutions

While Memcached is an excellent choice for many caching needs, it’s important to understand how it compares to other solutions like Redis. Memcached is primarily a memory object caching system, optimized for speed and simplicity. Redis, on the other hand, is a more versatile in-memory data structure store that supports various data structures like lists, sets, and hashes. Redis also offers features like persistence and pub/sub messaging, which Memcached lacks.

The choice between Memcached and Redis depends on your specific requirements. If you need a simple, fast, and distributed cache, Memcached is a great option. If you need more advanced features and data structures, Redis might be a better fit. Both Memcached and Redis are valuable tools, but they serve different purposes. Consider your application’s caching needs and future scalability plans when making your choice.

Prerequisites

Before installing Memcached on CentOS Stream 10, ensure that your system meets the necessary requirements. Proper preparation will facilitate a smooth installation process.

System Requirements

Memcached is lightweight and can run on modest hardware. However, the amount of RAM you allocate to Memcached will significantly impact its performance. A minimum of 1GB of RAM is recommended, but more may be necessary depending on the size of your dataset. Ensure your server has sufficient CPU resources to handle the expected load. For optimal performance, use a server with at least two CPU cores. Network bandwidth is also important, especially in distributed deployments.

Required Permissions

To install Memcached and configure it properly, you will need root or sudo privileges. These permissions are necessary to install packages, modify system files, and manage the Memcached service. Ensure that the user account you are using has the appropriate permissions before proceeding with the installation.

Base System Setup

Before installing Memcached, it’s crucial to ensure that your CentOS Stream 10 system is up-to-date. Open a terminal and run the following command:

sudo dnf update -y

This command updates all installed packages to their latest versions, ensuring that you have the latest security patches and bug fixes. This step is crucial for system stability and security. After the update, reboot your server to apply any kernel updates.

Networking Considerations

When planning your Memcached deployment, consider your network configuration. If you are running Memcached on a single server, you can use the default configuration. However, if you are planning a distributed deployment, you will need to configure Memcached to listen on the appropriate network interfaces. Ensure that your firewall allows traffic on port 11211, which is the default port for Memcached. Proper network planning is essential for ensuring that Memcached can communicate with your web applications and other Memcached servers.

Installation Process

Installing Memcached on CentOS Stream 10 is straightforward. Follow these step-by-step instructions to get Memcached up and running on your server.

Updating System Packages

Before installing any new software, it’s always a good practice to update your system’s package list. This ensures that you are installing the latest versions of the software and their dependencies. Run the following command in your terminal:

sudo dnf update -y

This command updates all installed packages to their latest versions. The -y flag automatically confirms the installation of updates, so you don’t have to manually confirm each package.

Installing Memcached Package

To install Memcached, use the following command:

sudo dnf install memcached -y

This command downloads and installs the Memcached package from the CentOS Stream 10 repositories. The -y flag automatically confirms the installation. Dnf (Dandified Yum) is the package manager for CentOS Stream 10, and it simplifies the process of installing, updating, and removing software.

Installing Supporting Libraries

In addition to the Memcached package, you may need to install supporting libraries for your specific use case. The most common supporting library is libmemcached, which provides a client library for interacting with Memcached. To install libmemcached, run the following command:

sudo dnf install libmemcached -y

This library is essential for developers who want to integrate Memcached with their applications. It provides a set of APIs for connecting to Memcached, storing data, and retrieving data. Ensure that you install the appropriate client library for your programming language (e.g., PHP, Python, Perl) to enable seamless integration.

Verifying Installation

After installing Memcached, verify that it is installed correctly by checking the version. Run the following command:

memcached -V

This command displays the version of Memcached installed on your system. If Memcached is installed correctly, you should see the version number in the output. This confirms that Memcached is properly installed and ready to be configured.

Troubleshooting Common Installation Issues

If you encounter any issues during the installation process, check the following:

  • Package Not Found: Ensure that your system’s package list is up-to-date. Run sudo dnf update and try installing Memcached again.
  • Dependency Issues: If you encounter dependency issues, try installing the missing dependencies manually. Dnf should provide information about the missing dependencies.
  • Permissions Issues: Ensure that you have root or sudo privileges when running the installation commands.

Consult the Memcached documentation or online forums for additional troubleshooting tips. The Memcached community is very active and can provide valuable assistance.

Basic Configuration

Configuring Memcached is crucial for optimizing its performance and security. This section covers the essential configuration parameters that you need to understand.

Configuration File Location

The main configuration file for Memcached is typically located at /etc/sysconfig/memcached. This file contains the settings that control how Memcached operates. You can edit this file using a text editor like nano or vi.

sudo nano /etc/sysconfig/memcached

This command opens the configuration file in the nano text editor. Make sure to use sudo to gain the necessary permissions to edit the file.

Essential Configuration Parameters

The following parameters are essential for configuring Memcached:

  • PORT: Specifies the port number that Memcached listens on. The default port is 11211. You can change this if needed.
  • USER: Specifies the user that Memcached runs as. It is recommended to run Memcached as a non-root user for security reasons.
  • MAXCONN: Specifies the maximum number of simultaneous connections that Memcached can handle. The default value is typically 1024.
  • CACHESIZE: Specifies the amount of memory (in MB) that Memcached can use. This is the most important parameter for performance.
  • OPTIONS: Specifies additional options for Memcached. This can include settings for binding to specific IP addresses, enabling SASL authentication, and more.

Here’s an example of how these parameters might be set in the configuration file:

 PORT="11211"
 USER="memcached"
 MAXCONN="2048"
 CACHESIZE="2048"
 OPTIONS="-l 127.0.0.1"

This configuration sets Memcached to listen on port 11211, run as the memcached user, allow up to 2048 simultaneous connections, allocate 2048 MB of memory, and listen only on the local loopback interface (127.0.0.1).

Memory Allocation

The amount of memory you allocate to Memcached is critical for its performance. If you allocate too little memory, Memcached will evict frequently used data, leading to a higher cache miss rate. If you allocate too much memory, you may starve other applications on your server. Monitor Memcached’s memory usage and adjust the CACHESIZE parameter accordingly. Use the memcached-tool to check your cache hit rate and total memory usage.

Connection Settings

The MAXCONN parameter determines the maximum number of simultaneous connections that Memcached can handle. If your application experiences a high volume of traffic, you may need to increase this value. However, be mindful of your server’s resources. Each connection consumes memory and CPU resources. Monitor your server’s performance and adjust the MAXCONN parameter accordingly. Ensure that you set an appropriate value to avoid overwhelming your server.

User Permissions

For security reasons, it is recommended to run Memcached as a non-root user. Create a dedicated user for Memcached and set the USER parameter in the configuration file to this user. This limits the potential damage if Memcached is compromised. To create a new user, run the following commands:

sudo useradd -r -M memcached
sudo chown memcached:memcached /var/run/memcached

These commands create a new system user named memcached and set the ownership of the /var/run/memcached directory to this user. Ensure that Memcached has the necessary permissions to read and write to its data directory. By setting up appropriate user permissions, you enhance the security of your Memcached installation.

Advanced Configuration

Fine-tune Memcached to maximize performance and efficiency. Explore advanced settings for optimal operation.

Performance Tuning

To achieve optimal performance with Memcached, consider several tuning parameters. The -n option controls the minimum space allocated for key+value+flags. Reduce this to minimize memory waste. Experiment with the -f option to adjust the chunk size growth factor. Larger values can reduce fragmentation. Monitor your cache hit rate and adjust these parameters accordingly.

Distributed Deployment

For high-traffic websites, a single Memcached instance may not suffice. Distribute Memcached across multiple servers to increase capacity and redundancy. Configure your client applications to connect to multiple Memcached servers. Consistent hashing algorithms can ensure even distribution of cached data. Each server in the cluster contributes to the overall caching capacity, enhancing performance and scalability.

Logging Options

Proper logging is essential for monitoring and troubleshooting Memcached. Configure Memcached to log detailed information about its operations. Use the -v option for verbose logging and -vv for even more detail. Specify a log file using the -o option. Regularly review the logs to identify potential issues. Detailed logging helps in pinpointing the cause of any performance or operational problems.

Memory Management

Memcached uses a slab allocator to manage memory. Understanding slab allocation can help you optimize memory usage. Each slab class holds chunks of the same size. Monitor slab usage to identify potential imbalances. Adjust the slab sizes to minimize wasted memory. Effective memory management ensures that Memcached operates efficiently and avoids unnecessary overhead.

Thread Configuration

Memcached is multi-threaded and can take advantage of multi-core systems. Use the -t option to specify the number of threads. A good starting point is to set the number of threads equal to the number of CPU cores. Experiment with different thread counts to find the optimal value for your workload. Properly configured threads improve Memcached’s ability to handle concurrent requests.

Security Setup

Securing your Memcached installation is crucial to protect sensitive data. Implement these security measures to safeguard your server.

Network Security

By default, Memcached listens on all network interfaces. Restrict access to specific IP addresses to prevent unauthorized access. Use the -l option to bind Memcached to a specific IP address. For example, -l 127.0.0.1 restricts access to the local machine. This ensures that only authorized clients can connect to Memcached. Limiting network access reduces the risk of external attacks and unauthorized data access.

Firewall Configuration

Configure your firewall to allow traffic on port 11211, which is the default port for Memcached. Use firewall-cmd to open the port. The following commands open port 11211 for TCP traffic:

sudo firewall-cmd --permanent --add-port=11211/tcp
sudo firewall-cmd --reload

These commands permanently add the port to the firewall configuration and then reload the firewall to apply the changes. Make sure your firewall is active to protect your Memcached instance from unauthorized network traffic. A properly configured firewall is an essential component of Memcached security.

Authentication Options

Memcached does not have built-in authentication mechanisms. Implement SASL (Simple Authentication and Security Layer) for authentication. SASL adds an extra layer of security by requiring clients to authenticate before accessing the cache. Configure SASL to use strong authentication methods such as Kerberos. Authentication ensures that only authorized users can access the Memcached server.

SASL Authentication

To set up SASL authentication, install the cyrus-sasl and cyrus-sasl-plain packages:

sudo dnf install cyrus-sasl cyrus-sasl-plain -y

Configure the SASL settings in the /etc/sasl2/memcached.conf file. Specify the authentication mechanisms to use. Ensure that your client applications are configured to authenticate using SASL. Proper SASL configuration protects your Memcached server from unauthorized access.

Encryption Considerations

Memcached does not encrypt data in transit. Use a VPN (Virtual Private Network) or SSH tunneling to encrypt traffic between clients and the Memcached server. This protects sensitive data from eavesdropping. Encryption ensures that your data remains confidential during transmission. Implementing encryption adds a significant layer of security to your Memcached deployment.

Starting and Managing the Service

Learn how to start, stop, and manage the Memcached service using systemctl. Proper service management ensures that Memcached runs smoothly and reliably.

Starting Memcached

To start the Memcached service, use the following command:

sudo systemctl start memcached

This command starts the Memcached service in the background. Verify that the service has started successfully by checking its status.

Enabling Automatic Startup

To configure Memcached to start automatically on boot, use the following command:

sudo systemctl enable memcached

This command creates a symbolic link in the systemd configuration directory, ensuring that Memcached starts automatically when the server boots. Automatic startup ensures that Memcached is always available after a reboot.

Checking Service Status

To check the status of the Memcached service, use the following command:

sudo systemctl status memcached

This command displays detailed information about the Memcached service, including its current status, uptime, and recent log messages. Use this command to verify that Memcached is running correctly and to troubleshoot any issues.

Stopping and Restarting

To stop the Memcached service, use the following command:

sudo systemctl stop memcached

To restart the Memcached service, use the following command:

sudo systemctl restart memcached

Restarting the service can be useful after making configuration changes. Always stop the service gracefully to prevent data loss.

Viewing Logs

Memcached logs can provide valuable information for troubleshooting. The logs are typically located in /var/log/memcached.log. Use the following command to view the logs:

sudo tail -f /var/log/memcached.log

This command displays the latest log messages in real-time. Monitor the logs for any error messages or warnings. Log analysis is an essential part of maintaining a healthy Memcached installation.

Testing Memcached Installation

Verify that Memcached is working correctly by performing a series of tests. These tests ensure that Memcached is properly installed and configured.

Basic Connectivity Tests

Use telnet to verify that you can connect to the Memcached server. Open a terminal and run the following command:

telnet localhost 11211

If the connection is successful, you should see a blank screen. Type stats and press Enter. If Memcached is running, you should see a list of statistics. This confirms that you can connect to Memcached and retrieve information.

Using memcached-tool

memcached-tool is a command-line tool for managing and monitoring Memcached. Use it to check the status of your Memcached server. Run the following command:

memcached-tool localhost:11211 stats

This command displays detailed statistics about the Memcached server, including uptime, memory usage, and cache hit rate. Use memcached-tool to monitor the performance of your Memcached installation. It provides valuable insights into Memcached’s operation.

Performance Testing

Perform simple benchmarking to measure Memcached’s performance. Use the time command to measure the time it takes to perform a series of set and get operations. Create a test script that sets and retrieves a large number of keys. Analyze the results to identify potential bottlenecks. Performance testing helps you fine-tune your Memcached configuration for optimal performance.

Common Test Commands

Here are some common Memcached commands for testing:

  • set key 0 0 5: Sets a key with a value of “value”.
  • value: The value to be stored.
  • get key: Retrieves the value of the key.
  • delete key: Deletes the key.

Use these commands to test Memcached’s basic functionality. Experiment with different key sizes and values. Ensure that Memcached is storing and retrieving data correctly.

Interpreting Test Results

Analyze the results of your tests to identify potential issues. A low cache hit rate indicates that Memcached is not effectively caching data. A high eviction rate indicates that Memcached is running out of memory. Adjust your Memcached configuration based on these results. Proper interpretation of test results is essential for optimizing Memcached’s performance.

Integrating with Web Applications

Integrate Memcached with your web applications to improve performance. This section covers integration with PHP, Python, and Perl.

PHP Integration

To integrate Memcached with PHP, install the php-memcached extension:

sudo dnf install php-memcached -y

After installing the extension, restart your web server. Use the Memcached class in PHP to connect to Memcached and store and retrieve data. Here’s a simple example:

 <?php
 $memcached = new Memcached();
 $memcached->addServer('localhost', 11211);
 $key = 'my_key';
 $value = 'my_value';
 $memcached->set($key, $value, 3600); // Store for 1 hour
 $retrieved_value = $memcached->get($key);
 echo $retrieved_value;
 ?>

This code connects to Memcached, sets a key-value pair, and then retrieves the value. PHP integration is straightforward and can significantly improve your application’s performance.

Python Integration

To integrate Memcached with Python, install the pymemcache library:

pip install pymemcache

Use the Client class in pymemcache to connect to Memcached and store and retrieve data. Here’s a simple example:

 from pymemcache.client import base
 client = base.Client(('localhost', 11211))
 key = 'my_key'
 value = 'my_value'
 client.set(key, value, expire=3600) # Store for 1 hour
 retrieved_value = client.get(key)
 print(retrieved_value)

This code connects to Memcached, sets a key-value pair, and then retrieves the value. Python integration is simple and effective for improving application performance.

Perl Integration

To integrate Memcached with Perl, install the Cache::Memcached module:

cpan install Cache::Memcached

Use the Cache::Memcached module to connect to Memcached and store and retrieve data. Here’s a simple example:

 use Cache::Memcached;
 my $memd = new Cache::Memcached {
  'servers' => [ '127.0.0.1:11211' ],
 };
 my $key = 'my_key';
 my $value = 'my_value';
 $memd->set($key, $value, 3600); # Store for 1 hour
 my $retrieved_value = $memd->get($key);
 print $retrieved_value;

This code connects to Memcached, sets a key-value pair, and then retrieves the value. Perl integration is a straightforward way to enhance your application’s performance.

Web Server Configuration

Configure your web server (e.g., Apache, Nginx) to use Memcached. For Apache, use the mod_memcache module. For Nginx, use the ngx_http_memcached_module. These modules allow your web server to directly access Memcached, reducing latency and improving performance. Web server integration ensures that your application can efficiently use Memcached.

Application Framework Examples

Popular application frameworks like Laravel and Django provide built-in support for Memcached. Configure your framework to use Memcached as the default cache store. This simplifies the process of integrating Memcached with your application. Framework integration streamlines the use of Memcached and enhances overall application performance.

Monitoring and Maintenance

Regular monitoring and maintenance are essential for ensuring that Memcached operates efficiently. This section covers key performance metrics, monitoring tools, and maintenance tasks.

Key Performance Metrics

Monitor the following key performance metrics:

  • Cache Hit Rate: The percentage of requests that are served from the cache. A high cache hit rate indicates that Memcached is effectively caching data.
  • Eviction Rate: The number of items that are evicted from the cache due to memory pressure. A high eviction rate indicates that Memcached is running out of memory.
  • Memory Usage: The amount of memory that Memcached is using. Monitor memory usage to ensure that Memcached is not consuming too much memory.
  • Connection Count: The number of active connections to Memcached. Monitor the connection count to ensure that Memcached is not being overwhelmed.

These metrics provide valuable insights into Memcached’s performance and can help you identify potential issues.

Monitoring Tools

Use monitoring tools like memcached-tool, Cacti, and Nagios to monitor Memcached. These tools provide detailed statistics and can alert you to potential issues. Regular monitoring is essential for maintaining a healthy Memcached installation. Choose the monitoring tool that best suits your needs and integrate it into your monitoring infrastructure.

Regular Maintenance Tasks

Perform the following regular maintenance tasks:

  • Review Logs: Regularly review the Memcached logs for error messages and warnings.
  • Update Memcached: Keep Memcached up-to-date with the latest security patches and bug fixes.
  • Optimize Configuration: Periodically review your Memcached configuration and adjust it as needed to optimize performance.
  • Monitor Performance: Continuously monitor Memcached’s performance and address any issues that arise.

Regular maintenance ensures that Memcached operates smoothly and reliably.

Scaling Considerations

As your application grows, you may need to scale your Memcached deployment. Consider the following scaling options:

  • Add More Memory: Increase the amount of memory allocated to Memcached.
  • Add More Servers: Distribute Memcached across multiple servers.
  • Optimize Data Distribution: Use consistent hashing to ensure even distribution of cached data.

Scaling your Memcached deployment ensures that it can handle increasing traffic and data volumes.

Troubleshooting Performance Issues

If you encounter performance issues with Memcached, consider the following:

  • Check Memory Usage: Ensure that Memcached is not running out of memory.
  • Check Network Connectivity: Ensure that your application can connect to Memcached.
  • Check Configuration: Ensure that your Memcached configuration is optimized for your workload.
  • Review Logs: Review the Memcached logs for error messages and warnings.

Troubleshooting performance issues is an essential part of maintaining a healthy Memcached installation.

Congratulations! You have successfully installed Memcached. Thanks for using this tutorial for installing the Memcached distributed memory caching on your CentOS Stream 10 system. For additional help or useful information, we recommend you check the official Memcached website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button