I have an Azure Cache for Redis instance running. I want to perform search on the data stored in the Redis cache using "RediSearch". For using RediSearch, it seems that installation of Redis Stack or a suitable extension is necessary. Is there a way to install this extension to the instance in Azure Cloud.
https://redis.io/docs/stack/search/
Or is there a way to do search without any installations. Please advise.
One cannot add RediSearch to an existing Azure Cache for Redis instance at this time.
There are several alternatives:
You can spin up an Azure Cache for Redis Enterprise tier instance with RedisSearch capability enabled
Provisioning Enterprise Tier resource
Provisioning RediSearch
You can spin it up on Redis Cloud, on Azure infrastructure (limited regions)
Sign up to Redis Cloud for free
Creating a free database on Redis Cloud
You can self-manage by installing Redis Stack on a VM or container instance in Azure
Amiram.
Related
I have an application running in Service Fabric with multiple nodes. All the running nodes share some cache data using distributed caching available in Service Fabric.
Now, I am looking to move out from Service Fabric due to cost issues.
What would be a good solution for me where I can also maintain caching between multiple instances ( like the distributed cache in Service Fabric).
I need to install it in an Azure environment.
If you're looking for an alternative managed by Microsoft, the best choice would be Azure Redis Cache.
More info:
https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/
The objective is to create a highly available redis cluster using kubernetes for a nodeJS client. I have already created the architecture as below:
Created a Kubernetes cluster of Kmaster with 3 nodes (slaves).
Then I created statefulsets and persistent volumes (6 - one for each POD).
Then created Redis pods 2 on each node (3 Master, 3 replicas of respective master).
I need to understand the role of Redis Sentinel hereafter, how does it manage the monitoring, scaling, HA for the redis-cluster PODs across the nodes. I understand Sentinel should be on each node and doing its job but what should be the right architecture here?
P.S. I have created a local setup for now, but ultimately this goes on Azure so any suggestions w.r.to az is also welcome.
Thanks!
From an Azure perspective, you have two options and if you are very specific to option two but are looking for the Sentinel architecture piece, there is business continuity and high availability options in both IaaS (Linux VM scale sets) and PaaS services that go beyond the Sentinel component.
Azure Cache for Redis (PaaS) where you choose & deploy your desired service tier (Premium Tier required for HA) and connect your client applications. Please see: Azure Cache for Redis FAQ and Caching Best Practice.
The second option is to deploy a solution (as you have detailed) as an IaaS solution built from Azure VMs. There are a number of Redis Linux VM images to choose from the Azure Marketplace or there is the option to create a Linux VM OS image from your on-premise solution and migrate that to Azure. The Sentinel component is enabled on each server (master, slavea, and slaveb, ...). There are networking and other considerations too. For building a system from scratch, please see: How to Setup Redis Replication (with Cluster-Mode Disabled) in CentOS 8 – Part 1 and How to Setup Redis For High Availability with Sentinel in CentOS 8 – Part 2
I'm working on a distributed application that runs on Windows Azure, but I'm new of this kind of environment. I have a question about server-side state management.
Where should I store global almost static data?
Because it is a distributed environment if a user makes a request to the application, there is no guarantee that subsequent requests will be routed to the same server and so I think that I should use Sql Azure or Table Storage Session Provider (but I've read that can be performance issues) to store the data.
I can also use Windows Azure AppFabric Caching that enables session maintenance.
What is the better solution to store global information that don't need to be secured? Is there something similar to "Application" (like Application["key"] = value)?
Thanks
Please see my responses on the following thread:
Microsoft Azure .NET 4.5 WebForms App : Session TimeOut / InProc / Single Instance
Specifics are below:
If you want to maintain session state you have to use one of the
following options
SQL Session State Provider using Azure SQL
Azure Table Session State
Session State with Azure Redis Cache
You can find details on how to do this at the following links:
Session State Management in Windows Azure Web Roles
Session state with Azure Redis cache in Azure App Service
The easiest way in my opinion is using Azure Redis Cache as noted in
the link above.
Let me know if this helps!
Definitely at that time perhaps, but now Azure Storage Tables :)
I need to use it in a .NET (webapi) app & using stackexchange.redis nuget package.
Appreciate if someone please point me to appropriate resources for following -
1) Can I choose any of Azure Redis cache or Redis cloud service if I interface through stackexchange.redis nuget?
2) Azure Redis Cache vs Redis Cloud - differences & implications of choosing one over the other - if this info already available.
Thanks
Disclaimer: I work for Redis Labs, the company providing Redis Cloud.
1) Can I choose any of Azure Redis cache or Redis cloud service if I interface through stackexchange.redis nuget?
Yes - both Azure Redis and Redis Cloud provide a Redis database that you can use with the StackEchange.Redis client from your app.
2) Azure Redis Cache vs Redis Cloud - differences & implications of choosing one over the other - if this info already available.
While both are essentially a hosted Redis service, there are several differences between them. Most notably, Azure Redis Cache is deeply integrated in the Azure platform so you have everything (management, metrics, etc...) accessible from your management portal. OTOH, Redis Cloud is cloud-agnostic (it is available on multiple clouds) and offers more features than any other Redis-as-a-Service service. I think that the fact that Redis Cloud is the only service that can scale infinitely and w/o downtime/migration is perhaps the strongest differentiator, but feel free to refer to this comparison table for a high level overview: https://redislabs.com/redis-comparison
I recently got a trial version of Windows Azure and wanted to know if there is any way I can deploy an application using Cassandra.
I can't speak specifically to Cassandra working or not in Azure unfortuantly. That's likely a question for that product's development team.
But the challenge you'll face with this, mySQL, or any other role hosted database is persistence. Azure Roles are in and of themselves not persistent so whatever back end store Cassandra is using would need to be placed onto soemthing like an Azure Drive (which is persisted to Azure Blob Storage). However, this would limit the scalability of the solution.
Basically, you run Cassandra as a worker role in Azure. Then, you can mount an Azure drive when a worker starts up and unmount when it shuts down.
This provides some insight re: how to use Cassandra on Azure: http://things.smarx.com/#Run Cassandra
Some help w/ Azure drives: http://azurescope.cloudapp.net/CodeSamples/cs/792ce345-256b-4230-a62f-903f79c63a67/
This should not limit your scalability at all. Just spin up another Cassandra instance whenever processing throughput or contiguous storage become an issue.
You might want to check out AppHarbor. AppHarbor is a .Net PaaS built on top of Amazon. It gives users the portability and infrastructure of Amazon and they provide a number of the rich services that Azure offers such as background tasks & load balancing plus some that it doesn't like 3rd party add-ons, dead-simple deployment and more. They already have add-ons for CouchDB, MongoDB and Redis if Cassandra got high enough on the requested features I'm sure they could set it up.